aboutsummaryrefslogtreecommitdiffstats
path: root/vespa-feed-client
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2021-06-04 09:40:20 +0200
committerJon Marius Venstad <venstad@gmail.com>2021-06-04 09:40:20 +0200
commita56ce0063cebc193d73800c455a1d4a3ba4da701 (patch)
tree83cd8df7a7f4c5ded3259dd3d8da89904188900c /vespa-feed-client
parent622a786072804d275ba91e257e5b6df81c0672c1 (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.java3
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java2
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)));