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