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 082609b8ecb1455d4e3c4077bc4716db89f96443..892a195b55b1d9581b380f722794ba9468d9b4a3 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 763b72dbf794e6710849f1700a2e79d63fcd6445..f84244a5f1d462a25afb0cbd21017a7e3224db43 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) {