aboutsummaryrefslogtreecommitdiffstats
path: root/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java')
-rw-r--r--http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java15
1 files changed, 8 insertions, 7 deletions
diff --git a/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java b/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java
index 6a76ef65082..68741d6d509 100644
--- a/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java
+++ b/http-client/src/main/java/ai/vespa/hosted/client/AbstractHttpClient.java
@@ -79,9 +79,9 @@ public abstract class AbstractHttpClient implements HttpClient {
.asURI())
.build();
builder.headers.forEach((name, values) -> values.forEach(value -> request.setHeader(name, value)));
+ request.setEntity(builder.entity);
- try (HttpEntity entity = builder.entity.get()) {
- request.setEntity(entity);
+ try {
try {
return handler.apply(execute(request, contextWithTimeout(builder)), request);
}
@@ -90,15 +90,16 @@ public abstract class AbstractHttpClient implements HttpClient {
throw RetryException.wrap(e, request);
}
}
- catch (IOException e) {
- throw new UncheckedIOException("failed closing request entity", e);
- }
catch (RetryException e) {
if (thrown == null)
thrown = e.getCause();
else
thrown.addSuppressed(e.getCause());
+ if (builder.entity != null && ! builder.entity.isRepeatable()) {
+ log.log(WARNING, "Cannot retry " + request + " as entity is not repeatable");
+ break;
+ }
log.log(FINE, e.getCause(), () -> request + " failed; will retry");
}
}
@@ -151,7 +152,7 @@ public abstract class AbstractHttpClient implements HttpClient {
private HttpURL.Query query = Query.empty();
private List<Supplier<Query>> dynamicQuery = new ArrayList<>();
private Map<String, List<String>> headers = new LinkedHashMap<>();
- private Supplier<HttpEntity> entity = () -> null;
+ private HttpEntity entity;
private RequestConfig config = HttpClient.defaultRequestConfig;
private ResponseVerifier verifier = HttpClient.throwOnError;
private ExceptionHandler catcher = HttpClient.retryAll;
@@ -177,7 +178,7 @@ public abstract class AbstractHttpClient implements HttpClient {
}
@Override
- public RequestBuilder body(Supplier<HttpEntity> entity) {
+ public RequestBuilder body(HttpEntity entity) {
this.entity = requireNonNull(entity);
return this;
}