@Override public FailureCallback getFailureCallback(final DruidAggregationQuery<?> druidQuery) { return new FailureCallback() { final FailureCallback nextFail = next.getFailureCallback(druidQuery); @Override public void invoke(Throwable error) { if (failed.compareAndSet(false, true)) { nextFail.invoke(error); } } }; }
@Override public void processResponse(JsonNode json, DruidAggregationQuery<?> druidQuery, LoggingContext metadata) { next.processResponse(json, druidQuery, metadata); } }
@Override public HttpErrorCallback getErrorCallback(final DruidAggregationQuery<?> druidQuery) { return new HttpErrorCallback() { final HttpErrorCallback nextError = next.getErrorCallback(druidQuery); @Override public void invoke(int statusCode, String reasonPhrase, String responseBody) { if (failed.compareAndSet(false, true)) { nextError.invoke(statusCode, reasonPhrase, responseBody); } } }; }
LoggingContext copy = new LoggingContext(RequestLog.copy()); SuccessCallback success = rootNode -> { response.processResponse( rootNode, new SqlAggregationQuery(druidQuery), ); }; FailureCallback failure = response.getFailureCallback(druidQuery);
@Override public boolean handleRequest( final RequestContext context, final DataApiRequest request, final DruidAggregationQuery<?> druidQuery, final ResponseProcessor response ) { SuccessCallback success = new SuccessCallback() { @Override public void invoke(JsonNode rootNode) { response.processResponse(rootNode, druidQuery, new LoggingContext(RequestLog.copy())); } }; HttpErrorCallback error = response.getErrorCallback(druidQuery); FailureCallback failure = response.getFailureCallback(druidQuery); BardQueryInfo.incrementCountFactHits(); DruidWebService webService = druidWebServiceSelector.select(context, request, druidQuery); webService.postDruidQuery(context, success, error, failure, druidQuery); return true; } }
@Override public ResponseContext getResponseContext() { return next.getResponseContext(); }
response.getErrorCallback(druidQuery).dispatch( 507, // Insufficient Storage reason, } catch (Throwable e) { LOG.info("Exception processing druid call in success", e); response.getFailureCallback(druidQuery).dispatch(e);
@Override public ResponseContext getResponseContext() { return next.getResponseContext(); }
@Override public void invoke(JsonNode rootNode) { response.processResponse(rootNode, druidQuery, new LoggingContext(RequestLog.copy())); } };
queryRowLimit ); HttpErrorCallback error = response.getErrorCallback(druidQuery); FailureCallback failure = response.getFailureCallback(druidQuery); webService.postDruidQuery(context, weightQuerySuccess, error, failure, weightEvaluationQuery); return true;
@Override public FailureCallback getFailureCallback(DruidAggregationQuery<?> druidQuery) { return next.getFailureCallback(druidQuery); }
@Override public HttpErrorCallback getErrorCallback(DruidAggregationQuery<?> druidQuery) { return next.getErrorCallback(druidQuery); }
@Override public ResponseContext getResponseContext() { return next.getResponseContext(); }
@Override public void processResponse(JsonNode json, DruidAggregationQuery<?> druidQuery, LoggingContext metadata) { if (isCacheable()) { String valueString = null; try { valueString = writer.writeValueAsString(json); int valueLength = valueString.length(); if (valueLength <= maxDruidResponseLengthToCache) { dataCache.set(cacheKey, valueString); } else { LOG.debug( "Response not cached. Length of {} exceeds max value length of {}", valueLength, maxDruidResponseLengthToCache ); } } catch (Exception e) { LOG.warn( "Unable to cache {}value of size: {}", valueString == null ? "null " : "", valueString == null ? "N/A" : valueString.length(), e ); } } next.processResponse(json, druidQuery, metadata); }
@Override public FailureCallback getFailureCallback(DruidAggregationQuery<?> druidQuery) { return next.getFailureCallback(druidQuery); }
@Override public HttpErrorCallback getErrorCallback(DruidAggregationQuery<?> druidQuery) { return next.getErrorCallback(druidQuery); }
@Override public ResponseContext getResponseContext() { return next.getResponseContext(); }
next.processResponse(json, druidQuery, metadata);
@Override public FailureCallback getFailureCallback(DruidAggregationQuery<?> druidQuery) { return next.getFailureCallback(druidQuery); }
@Override public HttpErrorCallback getErrorCallback(DruidAggregationQuery<?> druidQuery) { return next.getErrorCallback(druidQuery); }