From e528bca7e533ecbdce6022a9e90e0469480a925f Mon Sep 17 00:00:00 2001 From: liufeiyu1002 <32605119+liufeiyu1002@users.noreply.github.com> Date: Sun, 14 Aug 2022 21:12:00 +0800 Subject: [PATCH] fix GenericFilter get generic value (#10456) --- .../org/apache/dubbo/rpc/filter/GenericFilter.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java index a09e285e6c..75dcd5c1bc 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java @@ -97,7 +97,7 @@ public class GenericFilter implements Filter, Filter.Listener, ScopeModelAware { String generic = inv.getAttachment(GENERIC_KEY); if (StringUtils.isBlank(generic)) { - generic = RpcContext.getClientAttachment().getAttachment(GENERIC_KEY); + generic = getGenericValueFromRpcContext(); } if (StringUtils.isEmpty(generic) @@ -205,6 +205,14 @@ public class GenericFilter implements Filter, Filter.Listener, ScopeModelAware { }).toArray(); } + private String getGenericValueFromRpcContext(){ + String generic = RpcContext.getServerAttachment().getAttachment(GENERIC_KEY); + if (StringUtils.isBlank(generic)){ + generic = RpcContext.getClientAttachment().getAttachment(GENERIC_KEY); + } + return generic; + } + @Override public void onResponse(Result appResponse, Invoker invoker, Invocation inv) { if ((inv.getMethodName().equals($INVOKE) || inv.getMethodName().equals($INVOKE_ASYNC)) @@ -214,7 +222,7 @@ public class GenericFilter implements Filter, Filter.Listener, ScopeModelAware { String generic = inv.getAttachment(GENERIC_KEY); if (StringUtils.isBlank(generic)) { - generic = RpcContext.getClientAttachment().getAttachment(GENERIC_KEY); + generic = getGenericValueFromRpcContext(); } if (appResponse.hasException()) {