diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-06-04 09:40:20 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-06-04 09:40:20 +0200 |
commit | a56ce0063cebc193d73800c455a1d4a3ba4da701 (patch) | |
tree | 83cd8df7a7f4c5ded3259dd3d8da89904188900c /vespa-feed-client | |
parent | 622a786072804d275ba91e257e5b6df81c0672c1 (diff) |
Run all dispatch in the same thread
Diffstat (limited to 'vespa-feed-client')
-rw-r--r-- | vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java | 3 | ||||
-rw-r--r-- | vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java index 3de79865898..fde230d3ca4 100644 --- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java +++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java @@ -7,6 +7,9 @@ import org.apache.hc.client5.http.async.methods.SimpleHttpResponse; import java.io.Closeable; import java.util.concurrent.CompletableFuture; +/** + * Allows dispatch to a Vespa cluster. {@link #dispatch} should be called by a single thread, i.e., it is not thread-safe. + */ interface Cluster extends Closeable { /** Dispatch the request to the cluster, causing the response vessel to complete at a later time. */ diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java index 1b546dd1e42..7a6e2120be6 100644 --- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java +++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java @@ -202,7 +202,7 @@ class HttpRequestStrategy implements RequestStrategy { if (previous == null) { acquireSlot(); - cluster.dispatch(request, vessel); + offer(() -> cluster.dispatch(request, vessel)); } else previous.whenComplete((__, ___) -> offer(() -> cluster.dispatch(request, vessel))); |