code: public <T> T query(final String baseQuery, final ResultSetHandler<T> resultHandler,
        final Object... params)
        throws SQLException {
      try {
        return this.queryRunner.query(baseQuery, resultHandler, params);
      } catch (final SQLException ex) {
        // todo kunkun-tang: Retry logics should be implemented here.
        logger.error("query failed", ex);
        if (this.dbMetrics != null) {
          this.dbMetrics.markDBFailQuery();
        }
        throw ex;
      }
    }
docs: Executes the given Azkaban related SELECT SQL operations. it will call
  {@link AzkabanDataSource#getConnection()} inside queryrunner.query.
  
  @param sqlQuery The SQL query statement to execute.
  @param resultHandler The handler used to create the result object
  @param params Initialize the PreparedStatement's IN parameters
  @param <T> The type of object that the qeury handler returns
  @return The object returned by the handler.