浏览代码

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
     @Override
     public XContentBuilder newErrorBuilder() throws IOException {
     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
         // Disable filtering when building error responses
         return newBuilder(request.getXContentType(), false);
         return newBuilder(request.getXContentType(), false);
     }
     }