@Override public String toString() { return " name: " + serviceConfig.getNameAndUrl() + " hash code: " + hashCode(); }
@Override public String toString() { return " name: " + serviceConfig.getNameAndUrl() + " hash code: " + hashCode(); }
@Override public void onThrowable(Throwable t) { RequestLog.restore(logCtx); RequestLog.stopTiming(timerName); if (outstanding.decrementAndGet() == 0) { RequestLog.startTiming(RESPONSE_WORKFLOW_TIMER); } exceptionMeter.mark(); LOG.error("druid {} request failed:", serviceConfig.getNameAndUrl(), t); failure.invoke(t); } });
/** * IOC constructor. * * @param config the configuration for this druid service * @param asyncHttpClient the HTTP client * @param mapper A shared jackson object mapper resource * @param headersToAppend Supplier for map of headers for Druid requests * @param jsonNodeBuilderStrategy A function to build JSON nodes from the response */ public AsyncDruidWebServiceImpl( DruidServiceConfig config, AsyncHttpClient asyncHttpClient, ObjectMapper mapper, Supplier<Map<String, String>> headersToAppend, Function<Response, JsonNode> jsonNodeBuilderStrategy ) { this.serviceConfig = config; if (serviceConfig.getUrl() == null) { String msg = DRUID_URL_INVALID.format(config.getNameAndUrl()); LOG.error(msg); throw new IllegalStateException(msg); } LOG.info("Configured with druid server config: {}", config.toString()); this.headersToAppend = headersToAppend; this.webClient = asyncHttpClient; this.writer = mapper.writer(); this.httpErrorMeter = REGISTRY.meter("druid.errors.http"); this.exceptionMeter = REGISTRY.meter("druid.errors.exceptions"); this.jsonNodeBuilderStrategy = jsonNodeBuilderStrategy; }
/** * Count and log error, then send error response. * * @param status The response status * @param response The druid response * @param druidQueryId The Druid query ID * @param error callback for handling http errors. */ private void markError(Status status, Response response, String druidQueryId, HttpErrorCallback error) { getHttpErrorMeter().mark(); LOG.debug( "druid {} error: {} {} {} and druid query id: {}", getServiceConfig().getNameAndUrl(), status.getStatusCode(), status.getReasonPhrase(), response.getResponseBody(), druidQueryId ); error.invoke( status.getStatusCode(), status.getReasonPhrase(), response.getResponseBody() ); } }
getServiceConfig().getNameAndUrl(), status.getStatusCode(), status,
RequestLog.startTiming(RESPONSE_WORKFLOW_TIMER); LOG.error("druid {} http request failed: ", serviceConfig.getNameAndUrl(), t); failure.invoke(t); return CompletedFuture.throwing(t);