diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-06-01 14:05:46 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-06-01 15:32:59 +0200 |
commit | 252bd2535934f279e069db95756f414b883da562 (patch) | |
tree | e9485b1e4f008dc39cf11cc51c2dba90466eed8b /vespaclient-container-plugin | |
parent | ed8808e32f33b72dfa200521cab00628276bf029 (diff) |
Ignore request if onError was invoked on content channel
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r-- | vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java | 11 |
1 files changed, 10 insertions, 1 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 8cb927b8989..58857d1d8e6 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 @@ -832,6 +832,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { private final ReadableContentChannel delegate = new ReadableContentChannel(); private final Consumer<InputStream> reader; + private volatile boolean errorReported = false; public ForwardingContentChannel(Consumer<InputStream> reader) { this.reader = reader; @@ -854,7 +855,9 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { public void close(CompletionHandler handler) { try { delegate.close(logException); - reader.accept(new UnsafeContentInputStream(delegate)); + if (!errorReported) { + reader.accept(new UnsafeContentInputStream(delegate)); + } handler.completed(); } catch (Exception e) { @@ -862,6 +865,12 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { } } + @Override + public void onError(Throwable error) { + // Jdisc will automatically generate an error response in this scenario + log.log(FINE, error, () -> "ContentChannel.onError(): " + error.getMessage()); + errorReported = true; + } } static class DocumentOperationParser { |