This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch 1.3.x
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/1.3.x by this push:
     new 0560dd8  [SCB-1740]RouterInvokeFilter beforeSendResponseAsync return 
null and cause server hang without any information (#2515)
0560dd8 is described below

commit 0560dd81e64945203ed91b6cfb5e22928c444c40
Author: david6969xin <[email protected]>
AuthorDate: Wed Aug 18 11:38:30 2021 +0800

    [SCB-1740]RouterInvokeFilter beforeSendResponseAsync return null and cause 
server hang without any information (#2515)
---
 .../filter/HttpServerFilterBeforeSendResponseExecutor.java     | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBeforeSendResponseExecutor.java
 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBeforeSendResponseExecutor.java
index 2c6e1f4..14aec2d 100644
--- 
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBeforeSendResponseExecutor.java
+++ 
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBeforeSendResponseExecutor.java
@@ -49,7 +49,15 @@ public class HttpServerFilterBeforeSendResponseExecutor {
   protected CompletableFuture<Void> safeInvoke(HttpServerFilter 
httpServerFilter) {
     try {
       if (httpServerFilter.enabled()) {
-        return httpServerFilter.beforeSendResponseAsync(invocation, 
responseEx);
+        CompletableFuture<Void> future = 
httpServerFilter.beforeSendResponseAsync(invocation, responseEx);
+        if (future == null) {
+          future = new CompletableFuture<>();
+          future.completeExceptionally(new IllegalStateException(
+              "HttpServerFilter beforeSendResponseAsync can not return null, 
do not override it. Class="
+                  + httpServerFilter.getClass()
+                  .getName()));
+        }
+        return future;
       } else {
         CompletableFuture<Void> eFuture = new CompletableFuture<Void>();
         eFuture.complete(null);

Reply via email to