From 348ebd54dd6b8056964b06ee9be99ab0ba6b1ecf Mon Sep 17 00:00:00 2001 From: gaohongtao Date: Fri, 13 Oct 2017 11:41:14 +0800 Subject: [PATCH] A snapshot from the same thread would be properly 'continued' by ContextManager --- .../apm/agent/core/context/ContextManager.java | 2 +- .../apm/agent/core/context/ContextSnapshot.java | 4 ---- .../apm/plugin/sjdbc/ExecuteEventListener.java | 9 +++------ 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java index 48d7d8594..b8a57f9b1 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java @@ -153,7 +153,7 @@ public class ContextManager implements TracingContextListener, BootService, Igno if (snapshot == null) { throw new IllegalArgumentException("ContextSnapshot can't be null."); } - if (snapshot.isValid()) { + if (snapshot.isValid() && !snapshot.getTraceSegmentId().equals(get().capture().getTraceSegmentId())) { get().continued(snapshot); } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextSnapshot.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextSnapshot.java index cedac2421..e2a589e9e 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextSnapshot.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextSnapshot.java @@ -113,8 +113,4 @@ public class ContextSnapshot { public int getEntryApplicationInstanceId() { return entryApplicationInstanceId; } - - public boolean fromCurrent() { - return traceSegmentId.equals(ContextManager.capture().getTraceSegmentId()); - } } diff --git a/apm-sniffer/apm-sdk-plugin/sharding-jdbc-1.5.x-plugin/src/main/java/org/skywalking/apm/plugin/sjdbc/ExecuteEventListener.java b/apm-sniffer/apm-sdk-plugin/sharding-jdbc-1.5.x-plugin/src/main/java/org/skywalking/apm/plugin/sjdbc/ExecuteEventListener.java index 5bb6ecbbe..4f6abb573 100644 --- a/apm-sniffer/apm-sdk-plugin/sharding-jdbc-1.5.x-plugin/src/main/java/org/skywalking/apm/plugin/sjdbc/ExecuteEventListener.java +++ b/apm-sniffer/apm-sdk-plugin/sharding-jdbc-1.5.x-plugin/src/main/java/org/skywalking/apm/plugin/sjdbc/ExecuteEventListener.java @@ -23,9 +23,9 @@ import com.dangdang.ddframe.rdb.sharding.executor.event.DMLExecutionEvent; import com.dangdang.ddframe.rdb.sharding.executor.event.DQLExecutionEvent; import com.dangdang.ddframe.rdb.sharding.executor.threadlocal.ExecutorDataMap; import com.dangdang.ddframe.rdb.sharding.util.EventBusInstance; +import com.google.common.base.Joiner; import com.google.common.eventbus.AllowConcurrentEvents; import com.google.common.eventbus.Subscribe; -import java.util.stream.Collectors; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.ContextSnapshot; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -63,16 +63,13 @@ public class ExecuteEventListener { case BEFORE_EXECUTE: AbstractSpan span = ContextManager.createExitSpan("/SJDBC/BRANCH/" + operation, event.getDataSource()); if (ExecutorDataMap.getDataMap().containsKey(AsyncExecuteInterceptor.SNAPSHOT_DATA_KEY)) { - ContextSnapshot contextSnapshot = (ContextSnapshot)ExecutorDataMap.getDataMap().get(AsyncExecuteInterceptor.SNAPSHOT_DATA_KEY); - if (!contextSnapshot.fromCurrent()) { - ContextManager.continued(contextSnapshot); - } + ContextManager.continued((ContextSnapshot)ExecutorDataMap.getDataMap().get(AsyncExecuteInterceptor.SNAPSHOT_DATA_KEY)); } Tags.DB_TYPE.set(span, "sql"); Tags.DB_INSTANCE.set(span, event.getDataSource()); Tags.DB_STATEMENT.set(span, event.getSql()); if (!event.getParameters().isEmpty()) { - Tags.DB_BIND_VARIABLES.set(span, event.getParameters().stream().map(Object::toString).collect(Collectors.joining(","))); + Tags.DB_BIND_VARIABLES.set(span, Joiner.on(",").join(event.getParameters())); } span.setComponent(ComponentsDefine.SHARDING_JDBC); SpanLayer.asDB(span);