This is an automated email from the ASF dual-hosted git repository.

sunnianjun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 3817fa0c6e3 Use RootSpanContext in all tracing modules (#23688)
3817fa0c6e3 is described below

commit 3817fa0c6e399cdcf3fda7edb8a595cb6621b689
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 21 01:01:15 2023 +0800

    Use RootSpanContext in all tracing modules (#23688)
---
 .../jaeger/advice/JaegerCommandExecutorTaskAdvice.java        |  8 ++------
 .../jaeger/advice/JaegerJDBCExecutorCallbackAdvice.java       |  7 +++----
 .../agent/plugin/tracing/jaeger/constant/JaegerConstants.java |  2 --
 .../jaeger/advice/JaegerJDBCExecutorCallbackAdviceTest.java   |  8 +-------
 .../advice/OpenTelemetryCommandExecutorTaskAdvice.java        |  5 ++---
 .../advice/OpenTelemetryJDBCExecutorCallbackAdvice.java       |  7 +++----
 .../advice/OpenTelemetrySQLParserEngineAdvice.java            |  7 +++----
 .../opentelemetry/constant/OpenTelemetryConstants.java        |  2 --
 .../advice/OpenTelemetrySQLParserEngineAdviceTest.java        |  2 --
 .../advice/OpenTracingCommandExecutorTaskAdvice.java          | 11 ++---------
 .../advice/OpenTracingJDBCExecutorCallbackAdvice.java         |  6 ++----
 11 files changed, 18 insertions(+), 47 deletions(-)

diff --git 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerCommandExecutorTaskAdvice.java
 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerCommandExecutorTaskAdvice.java
index 20168890eac..855ae5a405f 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerCommandExecutorTaskAdvice.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerCommandExecutorTaskAdvice.java
@@ -23,9 +23,9 @@ import io.opentracing.util.GlobalTracer;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.util.AgentReflectionUtil;
+import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.constant.JaegerConstants;
 import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.span.JaegerErrorSpan;
-import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorDataMap;
 import org.apache.shardingsphere.proxy.backend.communication.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 
@@ -40,15 +40,11 @@ public final class JaegerCommandExecutorTaskAdvice 
implements InstanceMethodAdvi
     
     @Override
     public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Scope scope = GlobalTracer.get().buildSpan(OPERATION_NAME)
-                .withTag(Tags.COMPONENT.getKey(), 
JaegerConstants.COMPONENT_NAME)
-                .startActive(true);
-        ExecutorDataMap.getValue().put(JaegerConstants.ROOT_SPAN, 
scope.span());
+        
RootSpanContext.set(GlobalTracer.get().buildSpan(OPERATION_NAME).withTag(Tags.COMPONENT.getKey(),
 JaegerConstants.COMPONENT_NAME).startActive(true).span());
     }
     
     @Override
     public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
-        ExecutorDataMap.getValue().remove(JaegerConstants.ROOT_SPAN);
         BackendConnection connection = 
AgentReflectionUtil.<ConnectionSession>getFieldValue(target, 
"connectionSession").getBackendConnection();
         Scope scope = GlobalTracer.get().scopeManager().active();
         
scope.span().setTag(JaegerConstants.ShardingSphereTags.CONNECTION_COUNT.getKey(),
 connection.getConnectionSize());
diff --git 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerJDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerJDBCExecutorCallbackAdvice.java
index 3fe728859c3..551a1ef9966 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerJDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerJDBCExecutorCallbackAdvice.java
@@ -26,6 +26,7 @@ import lombok.SneakyThrows;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.util.AgentReflectionUtil;
+import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.constant.JaegerConstants;
 import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.span.JaegerErrorSpan;
 import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
@@ -47,12 +48,10 @@ public final class JaegerJDBCExecutorCallbackAdvice 
implements InstanceMethodAdv
     
     @Override
     @SneakyThrows({ReflectiveOperationException.class, SQLException.class})
-    @SuppressWarnings("unchecked")
     public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Span rootSpan = (Span) ((Map<String, Object>) 
args[2]).get(JaegerConstants.ROOT_SPAN);
         Tracer.SpanBuilder builder = 
GlobalTracer.get().buildSpan(OPERATION_NAME);
-        if (null != rootSpan) {
-            builder = builder.asChildOf(rootSpan);
+        if (!RootSpanContext.isEmpty()) {
+            builder = builder.asChildOf(RootSpanContext.<Span>get());
         }
         JDBCExecutionUnit executionUnit = (JDBCExecutionUnit) args[0];
         Map<String, DatabaseType> storageTypes = 
AgentReflectionUtil.getFieldValue(target, "storageTypes");
diff --git 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/constant/JaegerConstants.java
 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/constant/JaegerConstants.java
index cba3dc4efbf..fd7d90c5522 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/constant/JaegerConstants.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/constant/JaegerConstants.java
@@ -24,8 +24,6 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class JaegerConstants {
     
-    public static final String ROOT_SPAN = "jaeger_root_span";
-    
     /**
      * Component name of ShardingSphere's open tracing tag.
      */
diff --git 
a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerJDBCExecutorCallbackAdviceTest.java
 
b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerJDBCExecutorCallbackAdviceTest.java
index 5ff331e3701..13881c9bb47 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerJDBCExecutorCallbackAdviceTest.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerJDBCExecutorCallbackAdviceTest.java
@@ -19,9 +19,8 @@ package 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.advice;
 
 import io.opentracing.mock.MockSpan;
 import 
org.apache.shardingsphere.agent.plugin.tracing.advice.AbstractJDBCExecutorCallbackAdviceTest;
-import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.constant.JaegerConstants;
 import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.collector.JaegerCollector;
-import org.junit.Before;
+import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.constant.JaegerConstants;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -38,11 +37,6 @@ public final class JaegerJDBCExecutorCallbackAdviceTest 
extends AbstractJDBCExec
     @ClassRule
     public static final JaegerCollector COLLECTOR = new JaegerCollector();
     
-    @Before
-    public void setup() {
-        getExtraMap().put(JaegerConstants.ROOT_SPAN, null);
-    }
-    
     @Test
     public void assertMethod() {
         JaegerJDBCExecutorCallbackAdvice advice = new 
JaegerJDBCExecutorCallbackAdvice();
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryCommandExecutorTaskAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryCommandExecutorTaskAdvice.java
index a3b300314aa..19899d54d9e 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryCommandExecutorTaskAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryCommandExecutorTaskAdvice.java
@@ -24,8 +24,8 @@ import io.opentelemetry.api.trace.SpanKind;
 import io.opentelemetry.api.trace.StatusCode;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
+import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.constant.OpenTelemetryConstants;
-import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorDataMap;
 
 import java.lang.reflect.Method;
 
@@ -44,13 +44,12 @@ public class OpenTelemetryCommandExecutorTaskAdvice 
implements InstanceMethodAdv
                 .setSpanKind(SpanKind.CLIENT);
         Span span = spanBuilder.startSpan();
         target.setAttachment(span);
-        ExecutorDataMap.getValue().put(OpenTelemetryConstants.ROOT_SPAN, span);
+        RootSpanContext.set(span);
     }
     
     @Override
     public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Span) target.getAttachment()).end();
-        ExecutorDataMap.getValue().remove(OpenTelemetryConstants.ROOT_SPAN);
     }
     
     @Override
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java
index d7f1c0cc6c3..f845c1428b7 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java
@@ -27,6 +27,7 @@ import lombok.SneakyThrows;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.util.AgentReflectionUtil;
+import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.constant.OpenTelemetryConstants;
 import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
@@ -47,13 +48,11 @@ public class OpenTelemetryJDBCExecutorCallbackAdvice 
implements InstanceMethodAd
     
     @Override
     @SneakyThrows({ReflectiveOperationException.class, SQLException.class})
-    @SuppressWarnings("unchecked")
     public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Span root = (Span) ((Map<String, Object>) 
args[2]).get(OpenTelemetryConstants.ROOT_SPAN);
         Tracer tracer = GlobalOpenTelemetry.getTracer("shardingsphere-agent");
         SpanBuilder spanBuilder = tracer.spanBuilder(OPERATION_NAME);
-        if (null != root) {
-            spanBuilder.setParent(Context.current().with(root));
+        if (!RootSpanContext.isEmpty()) {
+            
spanBuilder.setParent(Context.current().with(RootSpanContext.<Span>get()));
         }
         spanBuilder.setAttribute(OpenTelemetryConstants.COMPONENT, 
OpenTelemetryConstants.COMPONENT_NAME);
         spanBuilder.setAttribute(OpenTelemetryConstants.DB_TYPE, 
OpenTelemetryConstants.DB_TYPE_VALUE);
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java
index 6668965db0a..4e4a85407f4 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java
@@ -25,8 +25,8 @@ import io.opentelemetry.api.trace.Tracer;
 import io.opentelemetry.context.Context;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
+import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.constant.OpenTelemetryConstants;
-import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorDataMap;
 
 import java.lang.reflect.Method;
 
@@ -39,14 +39,13 @@ public class OpenTelemetrySQLParserEngineAdvice implements 
InstanceMethodAdvice
     
     @Override
     public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Span root = (Span) 
ExecutorDataMap.getValue().get(OpenTelemetryConstants.ROOT_SPAN);
         Tracer tracer = GlobalOpenTelemetry.getTracer("shardingsphere-agent");
         SpanBuilder spanBuilder = tracer.spanBuilder(OPERATION_NAME)
                 .setAttribute(OpenTelemetryConstants.COMPONENT, 
OpenTelemetryConstants.COMPONENT_NAME)
                 .setAttribute(OpenTelemetryConstants.DB_TYPE, 
OpenTelemetryConstants.DB_TYPE_VALUE)
                 .setAttribute(OpenTelemetryConstants.DB_STATEMENT, 
String.valueOf(args[0]));
-        if (root != null) {
-            spanBuilder.setParent(Context.current().with(root));
+        if (!RootSpanContext.isEmpty()) {
+            
spanBuilder.setParent(Context.current().with(RootSpanContext.<Span>get()));
         }
         target.setAttachment(spanBuilder.startSpan());
     }
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/constant/OpenTelemetryConstants.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/constant/OpenTelemetryConstants.java
index c56350769fc..69c59aaae19 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/constant/OpenTelemetryConstants.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/constant/OpenTelemetryConstants.java
@@ -23,8 +23,6 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class OpenTelemetryConstants {
     
-    public static final String ROOT_SPAN = "opentelemetry_root_span";
-    
     public static final String COMPONENT = "component";
     
     public static final String COMPONENT_NAME = "ShardingSphere";
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdviceTest.java
 
b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdviceTest.java
index 16c2e0b0917..8f7254f19dd 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdviceTest.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdviceTest.java
@@ -26,7 +26,6 @@ import io.opentelemetry.sdk.trace.data.SpanData;
 import 
org.apache.shardingsphere.agent.plugin.tracing.advice.AbstractSQLParserEngineAdviceTest;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.collector.OpenTelemetryCollector;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.constant.OpenTelemetryConstants;
-import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorDataMap;
 import org.junit.Before;
 import org.junit.ClassRule;
 import org.junit.Test;
@@ -54,7 +53,6 @@ public final class OpenTelemetrySQLParserEngineAdviceTest 
extends AbstractSQLPar
         parentSpan = GlobalOpenTelemetry.getTracer("shardingsphere-agent")
                 .spanBuilder("parent")
                 .startSpan();
-        ExecutorDataMap.getValue().put(OpenTelemetryConstants.ROOT_SPAN, 
parentSpan);
         advice = new OpenTelemetrySQLParserEngineAdvice();
     }
     
diff --git 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingCommandExecutorTaskAdvice.java
 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingCommandExecutorTaskAdvice.java
index dad8af208fa..1671a24d5a5 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingCommandExecutorTaskAdvice.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingCommandExecutorTaskAdvice.java
@@ -17,14 +17,13 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.opentracing.advice;
 
-import io.opentracing.Scope;
 import io.opentracing.tag.Tags;
 import io.opentracing.util.GlobalTracer;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
+import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentracing.constant.ShardingSphereTags;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentracing.span.OpenTracingErrorSpan;
-import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorDataMap;
 
 import java.lang.reflect.Method;
 
@@ -35,20 +34,14 @@ public final class OpenTracingCommandExecutorTaskAdvice 
implements InstanceMetho
     
     private static final String OPERATION_NAME = "/ShardingSphere/rootInvoke/";
     
-    private static final String ROOT_SPAN = "ot_root_span_";
-    
     @Override
     public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Scope scope = GlobalTracer.get().buildSpan(OPERATION_NAME)
-                .withTag(Tags.COMPONENT.getKey(), 
ShardingSphereTags.COMPONENT_NAME)
-                .startActive(true);
-        ExecutorDataMap.getValue().put(ROOT_SPAN, scope.span());
+        
RootSpanContext.set(GlobalTracer.get().buildSpan(OPERATION_NAME).withTag(Tags.COMPONENT.getKey(),
 ShardingSphereTags.COMPONENT_NAME).startActive(true).span());
     }
     
     @Override
     public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         GlobalTracer.get().scopeManager().active().close();
-        ExecutorDataMap.getValue().remove(ROOT_SPAN);
     }
     
     @Override
diff --git 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingJDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingJDBCExecutorCallbackAdvice.java
index f0db88ad514..d25ad655755 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingJDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingJDBCExecutorCallbackAdvice.java
@@ -24,13 +24,13 @@ import io.opentracing.tag.Tags;
 import io.opentracing.util.GlobalTracer;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
+import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentracing.constant.ShardingSphereTags;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentracing.span.OpenTracingErrorSpan;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
 
 import java.lang.reflect.Method;
-import java.util.Map;
 
 /**
  * OpenTracing JDBC executor callback advice executor.
@@ -40,12 +40,10 @@ public final class OpenTracingJDBCExecutorCallbackAdvice 
implements InstanceMeth
     private static final String OPERATION_NAME = "/ShardingSphere/executeSQL/";
     
     @Override
-    @SuppressWarnings("unchecked")
     public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Span root = (Span) ((Map<String, Object>) 
args[2]).get("ot_root_span_");
         Tracer.SpanBuilder builder = 
GlobalTracer.get().buildSpan(OPERATION_NAME);
         if ((boolean) args[1]) {
-            builder.asChildOf(root);
+            builder.asChildOf(RootSpanContext.<Span>get());
         } else {
             JDBCExecutionUnit executionUnit = (JDBCExecutionUnit) args[0];
             ExecutionUnit unit = executionUnit.getExecutionUnit();

Reply via email to