Преглед изворни кода

Fix Tripped Assertion on Throw in RestActionListener (#72301)

Follow up to #72274. If we throw inside the response handler,
we move from a normal (already instantiated builder+buffer) to a new
error builder so we have to release the buffer first to not trip the assertion.
Armin Braun пре 4 година
родитељ
комит
ddc23ed1f9
1 измењених фајлова са 2 додато и 0 уклоњено
  1. 2 0
      server/src/main/java/org/elasticsearch/rest/AbstractRestChannel.java

+ 2 - 0
server/src/main/java/org/elasticsearch/rest/AbstractRestChannel.java

@@ -68,6 +68,8 @@ public abstract class AbstractRestChannel implements RestChannel {
 
     @Override
     public XContentBuilder newErrorBuilder() throws IOException {
+        // release whatever output we already buffered and write error response to fresh buffer
+        releaseOutputBuffer();
         // Disable filtering when building error responses
         return newBuilder(request.getXContentType(), false);
     }