/** * Checks and invokes error if the number of missing intervals are overflowed, i.e. more than the configured limit. * * @param json The json object containing the overflow flag * @param query The query with the schema for processing this response */ private void checkOverflow(JsonNode json, DruidAggregationQuery<?> query) { if (json.get(DruidJsonResponseContentKeys.DRUID_RESPONSE_CONTEXT.getName()) .get(DruidJsonResponseContentKeys.UNCOVERED_INTERVALS_OVERFLOWED.getName()) .asBoolean() ) { logAndGetErrorCallback( ErrorMessageFormat.TOO_MANY_INTERVALS_MISSING.format( query.getContext().getUncoveredIntervalsLimit() ), query ); } }
@Override public boolean handleRequest( RequestContext context, DataApiRequest request, DruidAggregationQuery<?> druidQuery, ResponseProcessor response ) { return next.handleRequest( context, request, druidQuery.withContext( druidQuery.getContext().withUncoveredIntervalsLimit(druidUncoveredIntervalLimit) ), new DruidPartialDataResponseProcessor(response) ); } }
/** * Wraps a query as a GroupBy Query. * * @param query The query to wrap. */ public SqlAggregationQuery(DruidAggregationQuery<?> query) { this( query.getDataSource(), query.getGranularity(), query.getDimensions(), query.getFilter(), query.getAggregations(), query.getPostAggregations(), query.getIntervals(), query.getContext() ); }
@Override public boolean handleRequest( RequestContext context, DataApiRequest request, DruidAggregationQuery<?> druidQuery, ResponseProcessor response ) { WebServiceHandler handler = handlerSelector.select(druidQuery, request, context); // Add a timeout to the query if the selected webService is configured with one Integer timeout = handler.getWebService().getTimeout(); // Add a priority to the query if there is one configured Integer priority = handler.getWebService().getServiceConfig().getPriority(); QueryContext qc = druidQuery.getContext().withTimeout(timeout).withPriority(priority); if (!qc.isEmpty()) { druidQuery = druidQuery.withContext(qc); } return handler.handleRequest(context, request, druidQuery, response); } }