private static <T> T handleProxyException(Request request, ProxyException e) { log.warn(e, "Proxy request failed: %s %s", request.getMethod(), request.getUri()); throw badRequest(BAD_GATEWAY, e.getMessage()); }
@Override public void onFailure(Throwable t) { if (t instanceof RejectedExecutionException && httpClient.isClosed()) { logError(t, "Unable to %s task at %s. HTTP client is closed.", action, request.getUri()); cleanUpLocally(); return; } // record failure if (cleanupBackoff.failure()) { logError(t, "Unable to %s task at %s. Back off depleted.", action, request.getUri()); cleanUpLocally(); return; } // reschedule long delayNanos = cleanupBackoff.getBackoffDelayNanos(); if (delayNanos == 0) { doScheduleAsyncCleanupRequest(cleanupBackoff, request, action); } else { errorScheduledExecutor.schedule(() -> doScheduleAsyncCleanupRequest(cleanupBackoff, request, action), delayNanos, NANOSECONDS); } }
throw new PageTransportErrorException(format("Error fetching %s: %s", request.getUri().toASCIIString(), e.getMessage()), e);
Futures.addCallback(future, new SimpleHttpResponseHandler<>(new UpdateResponseHandler(sources), request.getUri(), stats), executor);
@Override public Response handle(Request request) ImmutableList<String> parts = ImmutableList.copyOf(Splitter.on("/").omitEmptyStrings().split(request.getUri().getPath())); if (request.getMethod().equals("DELETE")) { assertEquals(parts.size(), 1);
future = httpClient.executeAsync(request, createFullJsonResponseHandler(taskInfoCodec)); currentRequestStartNanos.set(System.nanoTime()); Futures.addCallback(future, new SimpleHttpResponseHandler<>(this, request.getUri(), stats), executor);
assertEquals(maxSize, expectedMaxSize); RequestLocation requestLocation = new RequestLocation(request.getUri()); URI location = requestLocation.getLocation();
private synchronized void scheduleNextRequest() { // stopped or done? TaskStatus taskStatus = getTaskStatus(); if (!running || taskStatus.getState().isDone()) { return; } // outstanding request? if (future != null && !future.isDone()) { // this should never happen log.error("Can not reschedule update because an update is already running"); return; } // if throttled due to error, asynchronously wait for timeout and try again ListenableFuture<?> errorRateLimit = errorTracker.acquireRequestPermit(); if (!errorRateLimit.isDone()) { errorRateLimit.addListener(this::scheduleNextRequest, executor); return; } Request request = prepareGet() .setUri(uriBuilderFrom(taskStatus.getSelf()).appendPath("status").build()) .setHeader(CONTENT_TYPE, JSON_UTF_8.toString()) .setHeader(PRESTO_CURRENT_STATE, taskStatus.getState().toString()) .setHeader(PRESTO_MAX_WAIT, refreshMaxWait.toString()) .build(); errorTracker.startRequest(); future = httpClient.executeAsync(request, createFullJsonResponseHandler(taskStatusCodec)); currentRequestStartNanos.set(System.nanoTime()); Futures.addCallback(future, new SimpleHttpResponseHandler<>(this, request.getUri(), stats), executor); }
public static RuntimeException propagate(Request request, Throwable exception) { if (exception instanceof ConnectException) { throw new UncheckedIOException("Server refused connection: " + request.getUri().toASCIIString(), (ConnectException) exception); } if (exception instanceof IOException) { throw new UncheckedIOException((IOException) exception); } throwIfUnchecked(exception); throw new RuntimeException(exception); } }
private RuntimeException requestFailedException(String task, Request request, JsonResponse<QueryResults> response) { gone.set(true); if (!response.hasValue()) { return new RuntimeException( format("Error %s at %s returned an invalid response: %s [Error: %s]", task, request.getUri(), response, response.getResponseBody()), response.getException()); } return new RuntimeException(format("Error %s at %s returned %s: %s", task, request.getUri(), response.getStatusCode(), response.getStatusMessage())); }
@Test public void testRequestBuilder() { Request request = createRequest(); assertEquals(request.getMethod(), "GET"); assertEquals(request.getBodyGenerator(), NULL_BODY_GENERATOR); assertEquals(request.getUri(), URI.create("http://example.com")); assertEquals(request.getHeaders(), ImmutableListMultimap.of( "newheader", "withvalue", "anotherheader", "anothervalue")); }
@Test public void testRequestBuilder() { Request request = createRequest(); assertEquals(request.getMethod(), "GET"); assertEquals(request.getBodyGenerator(), NULL_BODY_GENERATOR); assertEquals(request.getUri(), URI.create("http://example.com")); assertEquals(request.getHeaders(), ImmutableListMultimap.of( "newheader", "withvalue", "anotherheader", "anothervalue")); assertFalse(request.isFollowRedirects()); }
@Test public void testRequestBuilder() { Request request = createRequest(); assertEquals(request.getMethod(), "GET"); assertEquals(request.getBodyGenerator(), NULL_BODY_GENERATOR); assertEquals(request.getUri(), URI.create("http://example.com")); assertEquals(request.getHeaders(), ImmutableListMultimap.of( "newheader", "withvalue", "anotherheader", "anothervalue")); }
@Test public void testRequestBuilder() { Request request = createRequest(); assertEquals(request.getMethod(), "GET"); assertEquals(request.getBodyGenerator(), NULL_BODY_GENERATOR); assertEquals(request.getUri(), URI.create("http://example.com")); assertEquals(request.getHeaders(), ImmutableListMultimap.of( "newheader", "withvalue", "anotherheader", "anothervalue")); assertFalse(request.isFollowRedirects()); }
@Test public void testBasicAuthentication() throws Exception { Predicate<Request> predicate = request -> request.getUri().getPath().startsWith("/private"); HttpRequestFilter filter = new BasicAuthRequestFilter(predicate, "Aladdin", "open sesame"); Request publicResourceRequest = createTestRequest("/public"); assertNull(filter.filterRequest(publicResourceRequest).getHeader(AUTHORIZATION)); Request privateResourceRequest = createTestRequest("/private"); assertEquals(filter.filterRequest(privateResourceRequest).getHeader(AUTHORIZATION), "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="); }
@Test public void testBasicAuthentication() throws Exception { Predicate<Request> predicate = request -> request.getUri().getPath().startsWith("/private"); HttpRequestFilter filter = new BasicAuthRequestFilter(predicate, "Aladdin", "open sesame"); Request publicResourceRequest = createTestRequest("/public"); assertNull(filter.filterRequest(publicResourceRequest).getHeader(AUTHORIZATION)); Request privateResourceRequest = createTestRequest("/private"); assertEquals(filter.filterRequest(privateResourceRequest).getHeader(AUTHORIZATION), "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="); }
public static Builder fromRequest(Request request) { return new Builder() .setUri(request.getUri()) .setMethod(request.getMethod()) .addHeaders(request.getHeaders()) .setBodyGenerator(request.getBodyGenerator()) .setFollowRedirects(request.isFollowRedirects()) .setPreserveAuthorizationOnRedirect(request.isPreserveAuthorizationOnRedirect()); }