diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-10-02 15:20:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-02 15:20:46 +0200 |
commit | 4e3f493be136274ccbb440b7434f4279283ef5ff (patch) | |
tree | 773841fc39e19b19ce757cb2f99304e13760f8c1 | |
parent | cb15d6a1012254ca4b9a1f7669d63958e489615a (diff) | |
parent | a0334edd0177249a36c493a9e73b190ea911f062 (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.java | 22 |
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); } } |