From c6b169544e199fdf6d8e27e58b8f98897c3e7ef7 Mon Sep 17 00:00:00 2001 From: tzy1316106836 <1316106836@qq.com> Date: Tue, 7 Jan 2020 21:35:50 +0800 Subject: [PATCH] Fix plugin bug when DUBBO retries (#4187) --- .../skywalking/apm/plugin/asf/dubbo/DubboInterceptor.java | 3 +++ .../apache/skywalking/apm/plugin/dubbo/DubboInterceptor.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/DubboInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/DubboInterceptor.java index 616717999b..41fce70073 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/DubboInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/DubboInterceptor.java @@ -72,6 +72,9 @@ public class DubboInterceptor implements InstanceMethodsAroundInterceptor { while (next.hasNext()) { next = next.next(); rpcContext.getAttachments().put(next.getHeadKey(), next.getHeadValue()); + if (invocation.getAttachments().containsKey(next.getHeadKey())) { + invocation.getAttachments().remove(next.getHeadKey()); + } } } else { ContextCarrier contextCarrier = new ContextCarrier(); diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptor.java index 994bc89660..92147f7b05 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptor.java @@ -73,6 +73,9 @@ public class DubboInterceptor implements InstanceMethodsAroundInterceptor { while (next.hasNext()) { next = next.next(); rpcContext.getAttachments().put(next.getHeadKey(), next.getHeadValue()); + if (invocation.getAttachments().containsKey(next.getHeadKey())) { + invocation.getAttachments().remove(next.getHeadKey()); + } } } else { ContextCarrier contextCarrier = new ContextCarrier(); -- GitLab