@Override public boolean isChildOf(TraceContextHolder other) { return getTraceContext().isChildOf(other); }
@Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class) public static void onMethodExit(@Nullable @Advice.Local("span") AbstractSpan<?> span, @Advice.Thrown Throwable t) { if (span != null) { span.captureException(t); span.deactivate().end(); } }
public final void end(long epochMicros) { if (!finished) { this.finished = true; this.duration = (epochMicros - timestamp) / AbstractSpan.MS_IN_MICROS; if (name.length() == 0) { name.append("unnamed"); } doEnd(epochMicros); } else { logger.warn("End has already been called: {}", this); assert false; } }
if (localSpan != null) { try { localSpan.activate(); } catch (Throwable t) { try { try { if (localSpan != null) { localSpan.deactivate();
@Override public void resetState() { super.resetState(); context.resetState(); stacktrace = null; type = null; subtype = null; action = null; originator = null; }
/** * Generic designation of a transaction in the scope of a single service (eg: 'GET /users/:id') */ public void setName(@Nullable String name) { if (!isSampled()) { return; } this.name.setLength(0); this.name.append(name); }
@Override public Span createSpan() { return createSpan(traceContext.getClock().getEpochMicros()); }
public void end() { end(traceContext.getClock().getEpochMicros()); }
@Override public void resetState() { super.resetState(); context.resetState(); result = null; spanCount.resetState(); noop = false; type = null; }
private ErrorCapture validateError(AbstractSpan span, boolean sampled, Transaction correspondingTransaction) { assertThat(reporter.getErrors()).hasSize(1); ErrorCapture error = reporter.getFirstError(); assertThat(error.getTraceContext().isChildOf(span.getTraceContext())).isTrue(); assertThat(error.getTransactionInfo().isSampled()).isEqualTo(sampled); assertThat(error.getTransactionInfo().getType()).isEqualTo(correspondingTransaction.getType()); return error; }