Skip to content

Commit

Permalink
for #1172, refactor OpenTracingRootInvokeHook
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Sep 25, 2018
1 parent 8b88cda commit 7028929
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,45 +25,26 @@
import io.shardingsphere.opentracing.constant.ShardingTags;

/**
* Open tracing root invoke handler.
* Open tracing root invoke hook.
*
* @author zhangliang
*/
public final class OpenTracingRootInvokeHook implements RootInvokeHook {

public static final String ROOT_SPAN_CONTINUATION = "ROOT_SPAN_CONTINUATION";
public static final String ACTIVE_SPAN_CONTINUATION = "ACTIVE_SPAN_CONTINUATION";

private static final String OPERATION_NAME = "/" + ShardingTags.COMPONENT_NAME + "/rootInvoke/";

private static final ThreadLocal<ActiveSpan> ACTIVE_SPAN = new ThreadLocal<>();
private ActiveSpan activeSpan;

@Override
public void start() {
ACTIVE_SPAN.set(ShardingTracer.get().buildSpan(OPERATION_NAME).withTag(Tags.COMPONENT.getKey(), ShardingTags.COMPONENT_NAME).startActive());
ExecutorDataMap.getDataMap().put(ROOT_SPAN_CONTINUATION, ACTIVE_SPAN.get().capture());
activeSpan = ShardingTracer.get().buildSpan(OPERATION_NAME).withTag(Tags.COMPONENT.getKey(), ShardingTags.COMPONENT_NAME).startActive();
ExecutorDataMap.getDataMap().put(ACTIVE_SPAN_CONTINUATION, activeSpan.capture());
}

@Override
public void finish(final int connectionCount) {
ACTIVE_SPAN.get().setTag(ShardingTags.CONNECTION_COUNT.getKey(), connectionCount).deactivate();
ACTIVE_SPAN.remove();
}

/**
* Tests if sql execute event in this overall event thread.
*
* @return sql execute event in this overall event thread or not.
*/
public static boolean isTrunkThread() {
return null != ACTIVE_SPAN.get();
}

/**
* Get active span.
*
* @return active span
*/
public static ThreadLocal<ActiveSpan> getActiveSpan() {
return ACTIVE_SPAN;
activeSpan.setTag(ShardingTags.CONNECTION_COUNT.getKey(), connectionCount).deactivate();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public final class OpenTracingSQLExecutionHook implements SQLExecutionHook {
@Override
public void start(final String dataSourceName, final String sql, final List<Object> parameters, final DataSourceMetaData dataSourceMetaData, final boolean isTrunkThread) {
if (!isTrunkThread) {
activeSpan = ((ActiveSpan.Continuation) ExecutorDataMap.getDataMap().get(OpenTracingRootInvokeHook.ROOT_SPAN_CONTINUATION)).activate();
activeSpan = ((ActiveSpan.Continuation) ExecutorDataMap.getDataMap().get(OpenTracingRootInvokeHook.ACTIVE_SPAN_CONTINUATION)).activate();
}
span = ShardingTracer.get().buildSpan(OPERATION_NAME)
.withTag(Tags.COMPONENT.getKey(), ShardingTags.COMPONENT_NAME)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public static MockTracer getTracer() {
@BeforeClass
public static void initTracer() {
ShardingTracer.init(TRACER);
ExecutorDataMap.getDataMap().remove(OpenTracingRootInvokeHook.ROOT_SPAN_CONTINUATION);
ExecutorDataMap.getDataMap().remove(OpenTracingRootInvokeHook.ACTIVE_SPAN_CONTINUATION);
}

@AfterClass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@
import io.shardingsphere.core.spi.root.SPIRootInvokeHook;
import org.junit.Test;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

public final class OpenTracingRootInvokeHookTest extends BaseOpenTracingHookTest {
Expand All @@ -34,11 +31,7 @@ public final class OpenTracingRootInvokeHookTest extends BaseOpenTracingHookTest
@Test
public void assertRootInvoke() {
rootInvokeHook.start();
assertTrue(OpenTracingRootInvokeHook.isTrunkThread());
assertNotNull(OpenTracingRootInvokeHook.getActiveSpan().get());
assertTrue(ExecutorDataMap.getDataMap().containsKey(OpenTracingRootInvokeHook.ROOT_SPAN_CONTINUATION));
assertTrue(ExecutorDataMap.getDataMap().containsKey(OpenTracingRootInvokeHook.ACTIVE_SPAN_CONTINUATION));
rootInvokeHook.finish(1);
assertFalse(OpenTracingRootInvokeHook.isTrunkThread());
assertNull(OpenTracingRootInvokeHook.getActiveSpan().get());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ private ActiveSpan mockActiveSpan() {
Continuation continuation = mock(Continuation.class);
ActiveSpan result = mock(ActiveSpan.class);
when(continuation.activate()).thenReturn(result);
ExecutorDataMap.getDataMap().put(OpenTracingRootInvokeHook.ROOT_SPAN_CONTINUATION, continuation);
ExecutorDataMap.getDataMap().put(OpenTracingRootInvokeHook.ACTIVE_SPAN_CONTINUATION, continuation);
return result;
}

@After
public void tearDown() {
ExecutorDataMap.getDataMap().remove(OpenTracingRootInvokeHook.ROOT_SPAN_CONTINUATION);
ExecutorDataMap.getDataMap().remove(OpenTracingRootInvokeHook.ACTIVE_SPAN_CONTINUATION);
}

@Test
Expand Down

0 comments on commit 7028929

Please sign in to comment.