Search in sources :

Example 1 with LocalSpan

use of org.apache.skywalking.apm.agent.core.context.trace.LocalSpan in project incubator-skywalking by apache.

the class TracingContext method createLocalSpan.

/**
 * Create a local span
 *
 * @param operationName most likely a local method signature, or business name.
 * @return the span represents a local logic block.
 * Ref to {@link LocalSpan}
 */
@Override
public AbstractSpan createLocalSpan(final String operationName) {
    if (isLimitMechanismWorking()) {
        NoopSpan span = new NoopSpan();
        return push(span);
    }
    AbstractSpan parentSpan = peek();
    final int parentSpanId = parentSpan == null ? -1 : parentSpan.getSpanId();
    AbstractTracingSpan span = (AbstractTracingSpan) DictionaryManager.findOperationNameCodeSection().findOrPrepare4Register(segment.getApplicationId(), operationName, false, false).doInCondition(new PossibleFound.FoundAndObtain() {

        @Override
        public Object doProcess(int operationId) {
            return new LocalSpan(spanIdGenerator++, parentSpanId, operationId);
        }
    }, new PossibleFound.NotFoundAndObtain() {

        @Override
        public Object doProcess() {
            return new LocalSpan(spanIdGenerator++, parentSpanId, operationName);
        }
    });
    span.start();
    return push(span);
}
Also used : NoopSpan(org.apache.skywalking.apm.agent.core.context.trace.NoopSpan) AbstractTracingSpan(org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan) LocalSpan(org.apache.skywalking.apm.agent.core.context.trace.LocalSpan) AbstractSpan(org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan)

Aggregations

AbstractSpan (org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan)1 AbstractTracingSpan (org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan)1 LocalSpan (org.apache.skywalking.apm.agent.core.context.trace.LocalSpan)1 NoopSpan (org.apache.skywalking.apm.agent.core.context.trace.NoopSpan)1