/** * Wrapper for session manager execute async method. * This method wraps the original method and, in addition, measures the statement * execution time and reports the query towards the diagnostics core. * * @param statement Statement * @param startTime execution start time * @param result execution's result future */ public void processStatement(final Statement statement, long startTime, ResultSetFuture result) { report(startTime, statement, result); }
/** * Submits a query reports asynchronously. * * @param startTime execution start time, in milliseconds * @param statement CQL statement * @param result ResultSetFuture */ private void report(final long startTime, final Statement statement, final ResultSetFuture result) { report(new Runnable() { @Override public void run() { try { // wait for the statement to be executed result.getUninterruptibly(); final long execTime = System.currentTimeMillis() - startTime; Query query = extractQuery(startTime, execTime, statement); logger.trace("Reporting query: {}.", query); queryReporter.report(query); } catch (Exception e) { logger.warn("An error occured while reporting query", e); } } }); }