summaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-06-01 14:05:46 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-06-01 15:32:59 +0200
commit252bd2535934f279e069db95756f414b883da562 (patch)
treee9485b1e4f008dc39cf11cc51c2dba90466eed8b /vespaclient-container-plugin
parented8808e32f33b72dfa200521cab00628276bf029 (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.java11
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 {