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);