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 35481ef67b3 Add JaegerSQLParserEngineAdvice (#23693)
35481ef67b3 is described below

commit 35481ef67b31b7f469cb8cee0fe6bdacf0a8bae8
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 21 20:27:52 2023 +0800

    Add JaegerSQLParserEngineAdvice (#23693)
    
    * Add JaegerSQLParserEngineAdvice
    
    * Add JaegerSQLParserEngineAdvice
---
 .../core/advice/TracingSQLParserEngineAdvice.java  | 41 ++++++++++++++++++++++
 .../jaeger/advice/JaegerSQLParserEngineAdvice.java | 14 ++++----
 .../OpenTelemetryJDBCExecutorCallbackAdvice.java   |  2 +-
 .../advice/OpenTelemetrySQLParserEngineAdvice.java | 14 ++++----
 .../advice/OpenTracingSQLParserEngineAdvice.java   | 14 ++++----
 .../zipkin/advice/ZipkinSQLParserEngineAdvice.java | 20 +++++------
 6 files changed, 70 insertions(+), 35 deletions(-)

diff --git 
a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingSQLParserEngineAdvice.java
 
b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingSQLParserEngineAdvice.java
new file mode 100644
index 00000000000..6ace9597d2c
--- /dev/null
+++ 
b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingSQLParserEngineAdvice.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.agent.plugin.tracing.core.advice;
+
+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 java.lang.reflect.Method;
+
+/**
+ * Tracing SQL parser engine advice executor.
+ * 
+ * @param <T> type of root span
+ */
+public abstract class TracingSQLParserEngineAdvice<T> implements 
InstanceMethodAdvice {
+    
+    protected static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
+    
+    @Override
+    public final void beforeMethod(final TargetAdviceObject target, final 
Method method, final Object[] args, final String pluginType) {
+        target.setAttachment(recordSQLParseInfo(RootSpanContext.get(), target, 
String.valueOf(args[0])));
+    }
+    
+    protected abstract Object recordSQLParseInfo(T rootSpan, 
TargetAdviceObject target, String sql);
+}
diff --git 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerSQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerSQLParserEngineAdvice.java
index dc4c3a9dcdc..57936261cd2 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerSQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JaegerSQLParserEngineAdvice.java
@@ -18,10 +18,11 @@
 package org.apache.shardingsphere.agent.plugin.tracing.jaeger.advice;
 
 import io.opentracing.Scope;
+import io.opentracing.Span;
 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.advice.TracingSQLParserEngineAdvice;
 import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.constant.JaegerConstants;
 import 
org.apache.shardingsphere.agent.plugin.tracing.jaeger.span.JaegerErrorSpan;
 
@@ -30,18 +31,15 @@ import java.lang.reflect.Method;
 /**
  * SQL parser engine advice executor.
  */
-public final class JaegerSQLParserEngineAdvice implements InstanceMethodAdvice 
{
-    
-    private static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
+public final class JaegerSQLParserEngineAdvice extends 
TracingSQLParserEngineAdvice<Span> {
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Scope scope = GlobalTracer.get().buildSpan(OPERATION_NAME)
+    protected Object recordSQLParseInfo(final Span rootSpan, final 
TargetAdviceObject target, final String sql) {
+        return GlobalTracer.get().buildSpan(OPERATION_NAME)
                 .withTag(Tags.COMPONENT.getKey(), 
JaegerConstants.COMPONENT_NAME)
                 .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
-                .withTag(Tags.DB_STATEMENT.getKey(), String.valueOf(args[0]))
+                .withTag(Tags.DB_STATEMENT.getKey(), sql)
                 .startActive(true);
-        target.setAttachment(scope);
     }
     
     @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 3fa329e72cd..961ec986aa0 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
@@ -35,7 +35,7 @@ import java.lang.reflect.Method;
 /**
  * OpenTelemetry JDBC executor callback advice executor.
  */
-public class OpenTelemetryJDBCExecutorCallbackAdvice extends 
TracingJDBCExecutorCallbackAdvice<Span> {
+public final class OpenTelemetryJDBCExecutorCallbackAdvice extends 
TracingJDBCExecutorCallbackAdvice<Span> {
     
     @Override
     protected void recordExecuteInfo(final Span rootSpan, final 
TargetAdviceObject target, final JDBCExecutionUnit executionUnit, final boolean 
isTrunkThread, final DataSourceMetaData metaData) {
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 4e4a85407f4..b25f2188e44 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
@@ -24,8 +24,8 @@ import io.opentelemetry.api.trace.StatusCode;
 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.core.advice.TracingSQLParserEngineAdvice;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.constant.OpenTelemetryConstants;
 
 import java.lang.reflect.Method;
@@ -33,21 +33,19 @@ import java.lang.reflect.Method;
 /**
  * OpenTelemetry SQL parser engine advice executor.
  */
-public class OpenTelemetrySQLParserEngineAdvice implements 
InstanceMethodAdvice {
-    
-    private static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
+public final class OpenTelemetrySQLParserEngineAdvice extends 
TracingSQLParserEngineAdvice<Span> {
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    protected Object recordSQLParseInfo(final Span rootSpan, final 
TargetAdviceObject target, final String sql) {
         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 (!RootSpanContext.isEmpty()) {
+                .setAttribute(OpenTelemetryConstants.DB_STATEMENT, sql);
+        if (null != rootSpan) {
             
spanBuilder.setParent(Context.current().with(RootSpanContext.<Span>get()));
         }
-        target.setAttachment(spanBuilder.startSpan());
+        return spanBuilder.startSpan();
     }
     
     @Override
diff --git 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingSQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingSQLParserEngineAdvice.java
index 8b72534f719..d24df2e80c3 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingSQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingSQLParserEngineAdvice.java
@@ -18,10 +18,11 @@
 package org.apache.shardingsphere.agent.plugin.tracing.opentracing.advice;
 
 import io.opentracing.Scope;
+import io.opentracing.Span;
 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.advice.TracingSQLParserEngineAdvice;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentracing.constant.ShardingSphereTags;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentracing.span.OpenTracingErrorSpan;
 
@@ -30,18 +31,15 @@ import java.lang.reflect.Method;
 /**
  * OpenTracing SQL parser engine advice executor.
  */
-public final class OpenTracingSQLParserEngineAdvice implements 
InstanceMethodAdvice {
-    
-    private static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
+public final class OpenTracingSQLParserEngineAdvice extends 
TracingSQLParserEngineAdvice<Span> {
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Scope scope = GlobalTracer.get().buildSpan(OPERATION_NAME)
+    protected Object recordSQLParseInfo(final Span rootSpan, final 
TargetAdviceObject target, final String sql) {
+        return GlobalTracer.get().buildSpan(OPERATION_NAME)
                 .withTag(Tags.COMPONENT.getKey(), 
ShardingSphereTags.COMPONENT_NAME)
                 .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
-                .withTag(Tags.DB_STATEMENT.getKey(), String.valueOf(args[0]))
+                .withTag(Tags.DB_STATEMENT.getKey(), sql)
                 .startActive(true);
-        target.setAttachment(scope);
     }
     
     @Override
diff --git 
a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/ZipkinSQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/ZipkinSQLParserEngineAdvice.java
index a865225141b..b4cc04914b0 100644
--- 
a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/ZipkinSQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/ZipkinSQLParserEngineAdvice.java
@@ -20,27 +20,27 @@ package 
org.apache.shardingsphere.agent.plugin.tracing.zipkin.advice;
 import brave.Span;
 import brave.Tracing;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
-import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
-import 
org.apache.shardingsphere.agent.plugin.tracing.zipkin.constant.ZipkinConstants;
 import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
+import 
org.apache.shardingsphere.agent.plugin.tracing.core.advice.TracingSQLParserEngineAdvice;
+import 
org.apache.shardingsphere.agent.plugin.tracing.zipkin.constant.ZipkinConstants;
 
 import java.lang.reflect.Method;
 
 /**
  * Zipkin SQL parser engine advice executor.
  */
-public final class ZipkinSQLParserEngineAdvice implements InstanceMethodAdvice 
{
+public final class ZipkinSQLParserEngineAdvice extends 
TracingSQLParserEngineAdvice<Span> {
     
     private static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
-        Span span = 
Tracing.currentTracer().newChild(RootSpanContext.<Span>get().context()).name(OPERATION_NAME);
-        span.tag(ZipkinConstants.Tags.COMPONENT, 
ZipkinConstants.COMPONENT_NAME);
-        span.tag(ZipkinConstants.Tags.DB_TYPE, ZipkinConstants.DB_TYPE_VALUE);
-        span.tag(ZipkinConstants.Tags.DB_STATEMENT, String.valueOf(args[0]));
-        span.start();
-        target.setAttachment(span);
+    protected Object recordSQLParseInfo(final Span rootSpan, final 
TargetAdviceObject target, final String sql) {
+        Span result = 
Tracing.currentTracer().newChild(RootSpanContext.<Span>get().context()).name(OPERATION_NAME);
+        result.tag(ZipkinConstants.Tags.COMPONENT, 
ZipkinConstants.COMPONENT_NAME);
+        result.tag(ZipkinConstants.Tags.DB_TYPE, 
ZipkinConstants.DB_TYPE_VALUE);
+        result.tag(ZipkinConstants.Tags.DB_STATEMENT, sql);
+        result.start();
+        return result;
     }
     
     @Override

Reply via email to