diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/TracingContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/TracingContext.java index 89383d7f1..f8db13073 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/TracingContext.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/TracingContext.java @@ -325,6 +325,11 @@ public class TracingContext implements AbstractTracerContext { */ @Override public AbstractSpan createExitSpan(final String operationName, final String remotePeer) { + if (isLimitMechanismWorking()) { + NoopExitSpan span = new NoopExitSpan(remotePeer); + return push(span); + } + AbstractSpan exitSpan; AbstractSpan parentSpan = peek(); if (parentSpan != null && parentSpan.isExit()) { @@ -336,10 +341,6 @@ public class TracingContext implements AbstractTracerContext { new PossibleFound.FoundAndObtain() { @Override public Object doProcess(final int peerId) { - if (isLimitMechanismWorking()) { - return new NoopExitSpan(peerId); - } - return DictionaryManager.findEndpointSection() .findOnly(segment.getServiceId(), operationName) .doInCondition( @@ -359,10 +360,6 @@ public class TracingContext implements AbstractTracerContext { new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { - if (isLimitMechanismWorking()) { - return new NoopExitSpan(remotePeer); - } - return DictionaryManager.findEndpointSection() .findOnly(segment.getServiceId(), operationName) .doInCondition(