diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-10-16 21:50:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-16 21:50:20 +0200 |
commit | 2f6d6c559c310280a74f134970614ae4ee95a22f (patch) | |
tree | 4961cbc47fbc893378096d7b7628eb5cf3165628 /vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java | |
parent | 16c10f396298967a5d144518227f2e36bfa80eb2 (diff) | |
parent | 1685b5eff9084ca7da4637432f6c661b7542ddaa (diff) |
Merge pull request #7328 from vespa-engine/jvenstad/fix-bug-in-feed-client-close-logic
Look at oldest send operation, rather than number of running ones
Diffstat (limited to 'vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java')
-rw-r--r-- | vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java index cff6ad2ed48..d300bead9c1 100644 --- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java +++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java @@ -18,8 +18,11 @@ import java.security.SecureRandom; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Random; import java.util.Set; import java.util.concurrent.ScheduledThreadPoolExecutor; @@ -35,7 +38,7 @@ import java.util.logging.Logger; public class OperationProcessor { private static final Logger log = Logger.getLogger(OperationProcessor.class.getName()); - private final Map<String, DocumentSendInfo> docSendInfoByOperationId = new HashMap<>(); + private final Map<String, DocumentSendInfo> docSendInfoByOperationId = new LinkedHashMap<>(); private final ArrayListMultimap<String, Document> blockedDocumentsByDocumentId = ArrayListMultimap.create(); private final Set<String> inflightDocumentIds = new HashSet<>(); private final int numDestinations; @@ -103,6 +106,15 @@ public class OperationProcessor { } } + /** Returns the id of the oldest operation to be sent. */ + public Optional<String> oldestIncompleteResultId() { + synchronized (monitor) { + return docSendInfoByOperationId.isEmpty() + ? Optional.empty() + : Optional.of(docSendInfoByOperationId.keySet().iterator().next()); + } + } + public String getClientId() { return clientId; } |