Commit c7325a4f authored by terrymanu's avatar terrymanu
Browse files

TracingListener => OpenTracingListener

parent 4a8e175e
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -15,24 +15,24 @@
 * </p>
 */

package io.shardingsphere.opentracing.tag;
package io.shardingsphere.opentracing;

import io.opentracing.tag.StringTag;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * Local tags.
 * Sharding tags.
 *
 * @author chenqingyang
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class LocalTags {
public final class ShardingTags {
    
    public static final String COMPONENT_NAME = "SHARDING-SPHERE";
    
    /**
     * DB_BIND_VARIABLES records the bind variables of sql statement.
     * Records the bind variables of SQL.
     */
    public static final StringTag DB_BIND_VARIABLES = new StringTag("db.bind_vars");
}
+8 −5
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@

package io.shardingsphere.opentracing.listener;

import io.opentracing.BaseSpan;
import io.opentracing.tag.Tags;
import io.shardingsphere.core.event.ShardingEvent;
import io.shardingsphere.core.event.ShardingEventBusInstance;

@@ -24,13 +26,13 @@ import java.util.HashMap;
import java.util.Map;

/**
 * Tracing listener.
 * Opentracing listener.
 * 
 * @author zhangliang
 * 
 * @param <T> type of sharding event
 */
public abstract class TracingListener<T extends ShardingEvent> {
public abstract class OpenTracingListener<T extends ShardingEvent> {
    
    /**
     * Register listener.
@@ -39,6 +41,7 @@ public abstract class TracingListener<T extends ShardingEvent> {
        ShardingEventBusInstance.getInstance().register(this);
    }
    
    @SuppressWarnings("unchecked")
    protected final void tracing(final T event) {
        switch (event.getEventType()) {
            case BEFORE_EXECUTE:
@@ -48,7 +51,7 @@ public abstract class TracingListener<T extends ShardingEvent> {
                tracingFinish();
                break;
            case EXECUTE_FAILURE:
                tracingFailure(event);
                getFailureSpan().setTag(Tags.ERROR.getKey(), true).log(System.currentTimeMillis(), getReason(event.getException()));
                tracingFinish();
                break;
            default:
@@ -60,9 +63,9 @@ public abstract class TracingListener<T extends ShardingEvent> {
    
    protected abstract void tracingFinish();
    
    protected abstract void tracingFailure(T event);
    protected abstract BaseSpan<?> getFailureSpan();
    
    protected final Map<String, ?> log(final Throwable cause) {
    private Map<String, ?> getReason(final Throwable cause) {
        Map<String, String> result = new HashMap<>(3, 1);
        result.put("event", "error");
        result.put("error.kind", cause.getClass().getName());
+0 −5
Original line number Diff line number Diff line
@@ -40,9 +40,4 @@ public final class DMLExecuteEventListener extends ExecuteEventListener {
    public void listen(final DMLExecutionEvent event) {
        tracing(event);
    }
    
    @Override
    protected String getOperation() {
        return "MODIFY";
    }
}
+0 −5
Original line number Diff line number Diff line
@@ -40,9 +40,4 @@ public final class DQLExecuteEventListener extends ExecuteEventListener {
    public void listen(final DQLExecutionEvent event) {
        tracing(event);
    }
    
    @Override
    protected String getOperation() {
        return "QUERY";
    }
}
+10 −14
Original line number Diff line number Diff line
@@ -20,13 +20,12 @@ package io.shardingsphere.opentracing.listener.execution;
import com.google.common.base.Joiner;
import io.opentracing.ActiveSpan;
import io.opentracing.Span;
import io.opentracing.Tracer;
import io.opentracing.tag.Tags;
import io.shardingsphere.core.executor.event.SQLExecutionEvent;
import io.shardingsphere.core.executor.threadlocal.ExecutorDataMap;
import io.shardingsphere.opentracing.ShardingTracer;
import io.shardingsphere.opentracing.listener.TracingListener;
import io.shardingsphere.opentracing.tag.LocalTags;
import io.shardingsphere.opentracing.listener.OpenTracingListener;
import io.shardingsphere.opentracing.ShardingTags;

/**
 * SQL execute event listener.
@@ -35,12 +34,12 @@ import io.shardingsphere.opentracing.tag.LocalTags;
 * @author wangkai
 * @author maxiaoguang
 */
public abstract class ExecuteEventListener extends TracingListener<SQLExecutionEvent> {
    
    private static final String SNAPSHOT_DATA_KEY = "OPENTRACING_SNAPSHOT_DATA";
public abstract class ExecuteEventListener extends OpenTracingListener<SQLExecutionEvent> {
    
    private static final String OPERATION_NAME_PREFIX = "/SHARDING-SPHERE/EXECUTE/";
    
    private static final String SNAPSHOT_DATA_KEY = "OPENTRACING_SNAPSHOT_DATA";

    private final ThreadLocal<ActiveSpan> trunkSpan = new ThreadLocal<>();
    
    private final ThreadLocal<Span> branchSpan = new ThreadLocal<>();
@@ -49,15 +48,14 @@ public abstract class ExecuteEventListener extends TracingListener<SQLExecutionE
    
    @Override
    protected final void beforeExecute(final SQLExecutionEvent event) {
        Tracer tracer = ShardingTracer.get();
        if (ExecutorDataMap.getDataMap().containsKey(SNAPSHOT_DATA_KEY) && null == trunkSpan.get() && null == branchSpan.get()) {
            trunkInBranchSpan.set(((ActiveSpan.Continuation) ExecutorDataMap.getDataMap().get(SNAPSHOT_DATA_KEY)).activate());
        }
        if (null == branchSpan.get()) {
            branchSpan.set(tracer.buildSpan(OPERATION_NAME_PREFIX + getOperation()).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
                    .withTag(Tags.PEER_HOSTNAME.getKey(), event.getDataSource()).withTag(Tags.COMPONENT.getKey(), LocalTags.COMPONENT_NAME)
            branchSpan.set(ShardingTracer.get().buildSpan(OPERATION_NAME_PREFIX).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
                    .withTag(Tags.PEER_HOSTNAME.getKey(), event.getDataSource()).withTag(Tags.COMPONENT.getKey(), ShardingTags.COMPONENT_NAME)
                    .withTag(Tags.DB_INSTANCE.getKey(), event.getDataSource()).withTag(Tags.DB_TYPE.getKey(), "sql")
                    .withTag(LocalTags.DB_BIND_VARIABLES.getKey(), event.getParameters().isEmpty() ? "" : Joiner.on(",").join(event.getParameters()))
                    .withTag(ShardingTags.DB_BIND_VARIABLES.getKey(), event.getParameters().isEmpty() ? "" : Joiner.on(",").join(event.getParameters()))
                    .withTag(Tags.DB_STATEMENT.getKey(), event.getSqlUnit().getSql()).startManual());
        }
    }
@@ -77,9 +75,7 @@ public abstract class ExecuteEventListener extends TracingListener<SQLExecutionE
    }
    
    @Override
    protected final void tracingFailure(final SQLExecutionEvent event) {
        branchSpan.get().setTag(Tags.ERROR.getKey(), true).log(System.currentTimeMillis(), log(event.getException()));
    protected final Span getFailureSpan() {
        return branchSpan.get();
    }
    
    protected abstract String getOperation();
}
Loading