@Override public void run() { getPendingLookups().clear(); // download load statuses of all lookups of each lookup tier lookupTiers.stream() .peek(tier -> LOG.trace("Querying metadata for lookup tier: {}", tier)) .forEach(lookupTier -> { druidClient.getJsonObject( successCallback, errorCallback, failureCallback, String.format(LOOKUP_QUERY_FORMAT, lookupTier) ); }); }
@Override public void query(Dimension dimension, DataSource dataSource) { // Success callback will update the dimension cache SuccessCallback success = buildDruidDimensionsSuccessCallback(dimension); DruidSearchQuery druidSearchQuery = new DruidSearchQuery( dataSource, AllGranularity.INSTANCE, null, Collections.singletonList(INTERVAL), Collections.singletonList(dimension), SEARCH_QUERY_SPEC, null, ROW_LIMIT ); RequestContext requestContext = new RequestContext(null, false); druidWebService.postDruidQuery( requestContext, success, errorCallback, failureCallback, druidSearchQuery ); }
@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); } }
@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; } }
/** * Queries Druid for updated datasource metadata and then updates the datasource metadata service. * * @param dataSourceName The data source to be updated. */ protected void queryDataSourceMetadata(DataSourceName dataSourceName) { String resourcePath = String.format(DATASOURCE_METADATA_QUERY_FORMAT, dataSourceName.asName()); // Success callback will update datasource metadata on success SuccessCallback success = buildDataSourceMetadataSuccessCallback(dataSourceName); HttpErrorCallback errorCallback = getErrorCallback(dataSourceName); druidWebService.getJsonObject(success, errorCallback, failureCallback, resourcePath); }
HttpErrorCallback error = response.getErrorCallback(druidQuery); FailureCallback failure = response.getFailureCallback(druidQuery); webService.postDruidQuery(context, weightQuerySuccess, error, failure, weightEvaluationQuery); return true;