summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2020-10-02 15:20:46 +0200
committerGitHub <noreply@github.com>2020-10-02 15:20:46 +0200
commit4e3f493be136274ccbb440b7434f4279283ef5ff (patch)
tree773841fc39e19b19ce757cb2f99304e13760f8c1
parentcb15d6a1012254ca4b9a1f7669d63958e489615a (diff)
parenta0334edd0177249a36c493a9e73b190ea911f062 (diff)
Merge pull request #14684 from vespa-engine/jonmv/doc-v1-async-call-completions-handlers-earlier
Call completion handlers earlier when receiving data/close in doc/v1/…
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
index bb1dd8f20c4..c056fe46e01 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
@@ -552,16 +552,30 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
this.reader = reader;
}
+ /** Write is complete when we have stored the buffer — call completion handler. */
@Override
public void write(ByteBuffer buf, CompletionHandler handler) {
- delegate.write(buf, handler);
+ try {
+ delegate.write(buf, logException);
+ handler.completed();
+ }
+ catch (Exception e) {
+ handler.failed(e);
+ }
}
+ /** Close is complete when we have close the buffer. */
@Override
public void close(CompletionHandler handler) {
- delegate.close(handler);
- try (UnsafeContentInputStream in = new UnsafeContentInputStream(delegate)) {
- reader.accept(in);
+ try {
+ delegate.close(logException);
+ try (UnsafeContentInputStream in = new UnsafeContentInputStream(delegate)) {
+ reader.accept(in);
+ }
+ handler.completed();
+ }
+ catch (Exception e) {
+ handler.failed(e);
}
}