You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by cr...@apache.org on 2023/07/14 02:37:15 UTC
[dubbo] branch 3.2 updated: The Response Filter and Response Interceptor handle exceptions (#12722)
This is an automated email from the ASF dual-hosted git repository.
crazyhzm pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new 65491fda07 The Response Filter and Response Interceptor handle exceptions (#12722)
65491fda07 is described below
commit 65491fda073edee57155fbbc8b258205a8379c3b
Author: huazhongming <cr...@gmail.com>
AuthorDate: Fri Jul 14 10:37:10 2023 +0800
The Response Filter and Response Interceptor handle exceptions (#12722)
Signed-off-by: crazyhzm <cr...@gmail.com>
---
.../protocol/rest/filter/ServiceInvokeRestFilter.java | 16 +++++++---------
.../rpc/protocol/rest/handler/NettyHttpHandler.java | 10 ++++++++--
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/filter/ServiceInvokeRestFilter.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/filter/ServiceInvokeRestFilter.java
index f1ac30b350..5ec11d5551 100644
--- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/filter/ServiceInvokeRestFilter.java
+++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/filter/ServiceInvokeRestFilter.java
@@ -121,16 +121,14 @@ public class ServiceInvokeRestFilter implements RestRequestFilter {
+ "\n message is: " + result.getException().getMessage()
+ "\n stacktrace is: " + stackTraceToString(exception));
}
- } else {
-
- try {
- // invoke the intercept chain before Result write to response
- executeResponseIntercepts(url, request, nettyHttpResponse, result.getValue(), rpcInvocation, serviceDeployer);
- } catch (Exception exception) {
- logger.error("", exception.getMessage(), "", "dubbo rest protocol execute ResponseIntercepts error", exception);
- throw exception;
- }
+ }
+ try {
+ // invoke the intercept chain before Result write to response
+ executeResponseIntercepts(url, request, nettyHttpResponse, result.getValue(), rpcInvocation, serviceDeployer);
+ } catch (Exception exception) {
+ logger.error("", exception.getMessage(), "", "dubbo rest protocol execute ResponseIntercepts error", exception);
+ throw exception;
}
}
diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/handler/NettyHttpHandler.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/handler/NettyHttpHandler.java
index bc4f9f0219..839015ba6a 100644
--- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/handler/NettyHttpHandler.java
+++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/handler/NettyHttpHandler.java
@@ -85,8 +85,6 @@ public class NettyHttpHandler implements HttpHandler<NettyRequestFacade, NettyHt
// first request filter
executeFilters(url, requestFacade, nettyHttpResponse, serviceDeployer, restRequestFilters);
- // second response filter
- executeFilters(url, requestFacade, nettyHttpResponse, serviceDeployer, restResponseFilters);
} catch (PathNoFoundException pathNoFoundException) {
logger.error("", pathNoFoundException.getMessage(), "", "dubbo rest protocol provider path no found ,raw request is :" + nettyHttpRequest, pathNoFoundException);
nettyHttpResponse.sendError(404, pathNoFoundException.getMessage());
@@ -102,6 +100,14 @@ public class NettyHttpHandler implements HttpHandler<NettyRequestFacade, NettyHt
+ " , stacktrace is: " + ServiceInvokeRestFilter.stackTraceToString(throwable));
}
+ // second response filter
+ try {
+ executeFilters(url, requestFacade, nettyHttpResponse, serviceDeployer, restResponseFilters);
+ } catch (Throwable throwable) {
+ logger.error("", throwable.getMessage(), "", "dubbo rest protocol provider error ,and raw request is " + nettyHttpRequest, throwable);
+ nettyHttpResponse.sendError(500, "dubbo rest invoke Internal error, message is " + throwable.getMessage() + " ,and exception type is : " + throwable.getClass()
+ + " , stacktrace is: " + ServiceInvokeRestFilter.stackTraceToString(throwable));
+ }
}