private StatusResponseHolder makeRequest(HttpMethod method, String url) { try { StatusResponseHolder response = this.httpClient .go(new Request(method, new URL(url)), responseHandler).get(); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE("Error while making request to indexer [%s %s]", response.getStatus(), response.getContent()); } return response; } catch (Exception e) { LOG.error(e, "Exception while sending request"); throw Throwables.propagate(e); } }
@Override public String runTask(Object taskObject) { try { final FullResponseHolder response = druidLeaderClient.go( druidLeaderClient.makeRequest( HttpMethod.POST, "/druid/indexer/v1/task" ).setContent(MediaType.APPLICATION_JSON, jsonMapper.writeValueAsBytes(taskObject)) ); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE("Failed to post task[%s]", taskObject); } final Map<String, Object> resultMap = jsonMapper.readValue( response.getContent(), JacksonUtils.TYPE_REFERENCE_MAP_STRING_OBJECT ); final String taskId = (String) resultMap.get("task"); return Preconditions.checkNotNull(taskId, "Null task id for task[%s]", taskObject); } catch (Exception e) { throw Throwables.propagate(e); } }
private StatusResponseHolder makeRequest(HttpMethod method, String url) { try { StatusResponseHolder response = httpClient.go( new Request(method, new URL(url)), responseHandler ).get(); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while making request to url[%s] status[%s] content[%s]", url, response.getStatus(), response.getContent() ); } return response; } catch (Exception e) { throw Throwables.propagate(e); } } }
if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE("Failed to kill task[%s]", taskId);
public List<Map<String, Object>> query(String url, QueryType query) { try { StatusResponseHolder response = httpClient.go( new Request(HttpMethod.POST, new URL(url)).setContent( "application/json", jsonMapper.writeValueAsBytes(query) ), responseHandler ).get(); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while querying[%s] status[%s] content[%s]", getBrokerURL(), response.getStatus(), response.getContent() ); } return jsonMapper.readValue( response.getContent(), new TypeReference<List<Map<String, Object>>>() { } ); } catch (Exception e) { throw Throwables.propagate(e); } }
private List<TaskStatusPlus> getTasks(String endpointSuffix) { try { final FullResponseHolder responseHolder = druidLeaderClient.go( druidLeaderClient.makeRequest(HttpMethod.GET, StringUtils.format("/druid/indexer/v1/%s", endpointSuffix)) ); if (!responseHolder.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE("Error while fetching the status of the last complete task"); } return jsonMapper.readValue( responseHolder.getContent(), new TypeReference<List<TaskStatusPlus>>() { } ); } catch (IOException | InterruptedException e) { throw new RuntimeException(e); } }
@Nullable private Map<String, LookupExtractorFactoryContainer> tryGetLookupListFromCoordinator(String tier) throws Exception { final FullResponseHolder response = fetchLookupsForTier(tier); if (response.getStatus().equals(HttpResponseStatus.NOT_FOUND)) { LOG.warn("No lookups found for tier [%s], response [%s]", tier, response); return null; } else if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new IOE( "Error while fetching lookup code from Coordinator with status[%s] and content[%s]", response.getStatus(), response.getContent() ); } // Older version of getSpecificTier returns a list of lookup names. // Lookup loading is performed via snapshot if older version is present. // This check is only for backward compatibility and should be removed in a future release if (response.getContent().startsWith("[")) { LOG.info( "Failed to retrieve lookup information from coordinator, " + "because coordinator appears to be running on older Druid version. " + "Attempting to load lookups using snapshot instead" ); return null; } else { return jsonMapper.readValue(response.getContent(), LOOKUPS_ALL_REFERENCE); } }
@Override public int killPendingSegments(String dataSource, DateTime end) { final String endPoint = StringUtils.format( "/druid/indexer/v1/pendingSegments/%s?interval=%s", StringUtils.urlEncode(dataSource), new Interval(DateTimes.MIN, end) ); try { final FullResponseHolder responseHolder = druidLeaderClient.go( druidLeaderClient.makeRequest(HttpMethod.DELETE, endPoint) ); if (!responseHolder.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE("Error while killing pendingSegments of dataSource[%s] created until [%s]", dataSource, end); } final Map<String, Object> resultMap = jsonMapper.readValue( responseHolder.getContent(), JacksonUtils.TYPE_REFERENCE_MAP_STRING_OBJECT ); final Object numDeletedObject = resultMap.get("numDeleted"); return (Integer) Preconditions.checkNotNull(numDeletedObject, "numDeletedObject"); } catch (Exception e) { throw new RuntimeException(e); } } }
).get(); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while posting events to url[%s] status[%s] content[%s]",
public void shutdownSupervisor(String id) { try { StatusResponseHolder response = httpClient.go( new Request(HttpMethod.POST, new URL(StringUtils.format("%ssupervisor/%s/shutdown", getIndexerURL(), StringUtils.urlEncode(id)))), responseHandler ).get(); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while shutting down supervisor, response [%s %s]", response.getStatus(), response.getContent() ); } LOG.info("Shutdown supervisor with id[%s]", id); } catch (Exception e) { throw Throwables.propagate(e); } }
@Override public int getTotalWorkerCapacity() { try { final FullResponseHolder response = druidLeaderClient.go( druidLeaderClient.makeRequest(HttpMethod.GET, "/druid/indexer/v1/workers") .setHeader("Content-Type", MediaType.APPLICATION_JSON) ); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while getting available cluster capacity. status[%s] content[%s]", response.getStatus(), response.getContent() ); } final Collection<IndexingWorkerInfo> workers = jsonMapper.readValue( response.getContent(), new TypeReference<Collection<IndexingWorkerInfo>>() {} ); return workers.stream().mapToInt(workerInfo -> workerInfo.getWorker().getCapacity()).sum(); } catch (Exception e) { throw new RuntimeException(e); } }
public String submitSupervisor(String spec) { try { StatusResponseHolder response = httpClient.go( new Request(HttpMethod.POST, new URL(getIndexerURL() + "supervisor")) .setContent( "application/json", StringUtils.toUtf8(spec) ), responseHandler ).get(); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while submitting supervisor to overlord, response [%s %s]", response.getStatus(), response.getContent() ); } Map<String, String> responseData = jsonMapper.readValue( response.getContent(), JacksonUtils.TYPE_REFERENCE_MAP_STRING_STRING ); String id = responseData.get("id"); LOG.info("Submitted supervisor with id[%s]", id); return id; } catch (Exception e) { throw Throwables.propagate(e); } }
@SuppressWarnings("unchecked") public void poll() { try { FullResponseHolder response = druidLeaderClient.go( druidLeaderClient.makeRequest(HttpMethod.GET, RulesResource.RULES_ENDPOINT) ); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while polling rules, status[%s] content[%s]", response.getStatus(), response.getContent() ); } ConcurrentHashMap<String, List<Rule>> newRules = new ConcurrentHashMap<>( (Map<String, List<Rule>>) jsonMapper.readValue( response.getContent(), new TypeReference<Map<String, List<Rule>>>() { } ) ); log.debug("Got [%,d] rules", newRules.size()); rules.set(newRules); } catch (Exception e) { log.error(e, "Exception while polling for rules"); } }
responseHandler ).get(); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while submitting task to indexer response [%s %s]",
public static class TaskNotRunnableException extends RuntimeException { public TaskNotRunnableException(String message) { super(message); } }
).get(); if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while querying[%s] status[%s] content[%s]",
public void waitUntilInstanceReady(final HttpClient client, final String host) { final StatusResponseHandler handler = new StatusResponseHandler(StandardCharsets.UTF_8); RetryUtil.retryUntilTrue( () -> { try { StatusResponseHolder response = client.go( new Request(HttpMethod.GET, new URL(StringUtils.format("%s/status/health", host))), handler ).get(); LOG.info("%s %s", response.getStatus(), response.getContent()); return response.getStatus().equals(HttpResponseStatus.OK); } catch (Throwable e) { LOG.error(e, ""); return false; } }, "Waiting for instance to be ready: [" + host + "]" ); } }
@Override public ClientResponse<RetryResponseHolder<Intermediate>> handleResponse(HttpResponse httpResponse) { LOG.debug("UnauthorizedResponseHandler - Got response status {}", httpResponse.getStatus()); if (httpResponse.getStatus().equals(HttpResponseStatus.UNAUTHORIZED)) { // Drain the buffer //noinspection ResultOfMethodCallIgnored httpResponse.getContent().toString(); return ClientResponse.unfinished(RetryResponseHolder.retry()); } else { return wrap(httpResponseHandler.handleResponse(httpResponse)); } }
if (!response.getStatus().equals(HttpResponseStatus.OK)) { throw new ISE( "Error while fetching serverView status[%s] content[%s]",
@Override public ClientResponse<RetryResponseHolder<Intermediate>> handleResponse( HttpResponse httpResponse, TrafficCop trafficCop ) { log.debug("UnauthorizedResponseHandler - Got response status [%s]", httpResponse.getStatus()); if (httpResponse.getStatus().equals(HttpResponseStatus.UNAUTHORIZED)) { // Drain the buffer httpResponse.getContent().toString(); return ClientResponse.unfinished(RetryResponseHolder.retry()); } else { return wrap(httpResponseHandler.handleResponse(httpResponse, trafficCop)); } }