@Override public void onFailure(Response response, Throwable failure) { try { final String errorMessage = failure.getMessage(); requestLogger.log( new RequestLogLine( new DateTime(), req.getRemoteAddr(), query, new QueryStats( ImmutableMap.<String, Object>of( "success", false, "exception", errorMessage == null ? "no message" : errorMessage)))); } catch (IOException logError) { log.error(logError, "Unable to log query [%s]!", query); } log.makeAlert(failure, "Exception handling request") .addData("exception", failure.toString()) .addData("query", query) .addData("peer", req.getRemoteAddr()) .emit(); super.onFailure(response, failure); }
@Override public void onComplete(Result result) { final long requestTime = System.currentTimeMillis() - start; emitter.emit( new ServiceMetricEvent.Builder() .setUser2(DataSourceUtil.getMetricName(query.getDataSource())) .setUser3(String.valueOf(query.getContextPriority(0))) .setUser4(query.getType()) .setUser5(DataSourceUtil.COMMA_JOIN.join(query.getIntervals())) .setUser6(String.valueOf(query.hasFilters())) .setUser7(req.getRemoteAddr()) .setUser8(query.getId()) .setUser9(query.getDuration().toPeriod().toStandardMinutes().toString()) .build("request/time", requestTime)); try { requestLogger.log( new RequestLogLine( new DateTime(), req.getRemoteAddr(), query, new QueryStats( ImmutableMap.<String, Object>of( "request/time", requestTime, "success", true)))); } catch (Exception e) { log.error(e, "Unable to log query [%s]!", query); } super.onComplete(result); }