No debe llamar a executeQuery(String) en una PreparedStatement , debe llamar a executeQuery() en cambio. Esto está explícitamente prohibido por la API de JDBC, pero solo sale mal por accidente (debido al error de sintaxis) con MySQL Connector/J.
Tenga en cuenta que su consulta actual es el equivalente a:
select * from matrix where metric_name = ?
No veo una razón por la que usarías IN aquí.