@Override public Future<JsonNode> executeQuery( DruidQuery<?> druidQuery, SuccessCallback successCallback, FailureCallback failureCallback ) { RequestLog logCtx = RequestLog.dump(); //todo eventually stop/start RequestLog phases return CompletableFuture.supplyAsync(() -> { try { JsonNode jsonNode = executeAndProcessQuery((DruidAggregationQuery) druidQuery); if (successCallback != null) { successCallback.invoke(jsonNode); } return jsonNode; } catch (Throwable t) { LOG.warn("Failed while querying ", t); if (failureCallback != null) { failureCallback.dispatch(t); } } finally { RequestLog.restore(logCtx); } return null; } ); }
@Override public Response onCompleted(Response response) { String druidQueryId = response.getHeader("X-Druid-Query-Id"); Status status = Status.fromStatusCode(response.getStatusCode()); logRequest(logCtx, timerName, outstanding, druidQueryId, status); if (hasError(status)) { markError(status, response, druidQueryId, error); } else { try { success.invoke(jsonNodeBuilderStrategy.apply(response)); } catch (RuntimeException e) { failure.invoke(e); } } // we consumed this response, so pass null to any chains return null; }
success.invoke(mapper.readTree(jsonResponse.call())); } else { error.invoke(statusCode, reasonPhrase, jsonResponse.call());
success.invoke(mapper.readTree(jsonResponse.call())); } else { error.invoke(statusCode, reasonPhrase, jsonResponse.call());