From 1b1f8d49c19f307af79fabdb8f5201251cb8f93c Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 8 Jul 2017 10:53:13 +0800 Subject: [PATCH] Add checker for extract and inject. --- .../apm/agent/core/context/ContextManager.java | 17 ++++++++++++----- .../apm/agent/core/context/TracingContext.java | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java index 082609b8ec..892a195b55 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java @@ -16,7 +16,9 @@ import org.skywalking.apm.util.StringUtil; /** * {@link ContextManager} controls the whole context of {@link TraceSegment}. Any {@link TraceSegment} relates to * single-thread, so this context use {@link ThreadLocal} to maintain the context, and make sure, since a {@link - * TraceSegment} starts, all ChildOf spans are in the same context.

What is 'ChildOf'? {@see + * TraceSegment} starts, all ChildOf spans are in the same context. + *

+ * What is 'ChildOf'? {@see * https://github.com/opentracing/specification/blob/master/specification.md#references-between-spans} * *

Also, {@link ContextManager} delegates to all {@link AbstractTracerContext}'s major methods. @@ -107,12 +109,17 @@ public class ContextManager implements TracingContextListener, BootService, Igno return span; } - public static void inject(ContextCarrier contextCarrier) { - get().inject(contextCarrier); + public static void inject(ContextCarrier carrier) { + if (carrier != null && carrier.isValid()) { + get().inject(carrier); + } } - public static void extract(ContextCarrier contextCarrier) { - get().extract(contextCarrier); + public static void extract(ContextCarrier carrier) { + if (carrier == null) { + throw new IllegalArgumentException("ContextCarrier can't be null."); + } + get().extract(carrier); } public ContextSnapshot capture() { diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java index 763b72dbf7..f84244a5f1 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java @@ -70,8 +70,8 @@ public class TracingContext implements AbstractTracerContext { * Inject the context into the given carrier, only when the active span is an exit one. * * @param carrier to carry the context for crossing process. - * @see {@link AbstractTracerContext#inject(ContextCarrier)} * @throws IllegalStateException, if the active span isn't an exit one. + * @see {@link AbstractTracerContext#inject(ContextCarrier)} */ @Override public void inject(ContextCarrier carrier) { -- GitLab