@Override public String toString() { return "ArrayListSpanAccumulator{" + "spans=" + getSpans() + '}'; }
private String messageChannelName(MessageChannel channel) { return SpanNameUtil.shorten(channelName(channel)); }
String name(ProceedingJoinPoint pjp) { return this.spanNamer.name(getMethod(pjp, pjp.getTarget()), SpanNameUtil.toLowerHyphen(pjp.getSignature().getName())); }
@Override @javax.annotation.Nullable public Span detach(/*@Nullable*/ Span span) { if (span == null) { return null; } Span current = OpenCensusSleuthSpanContextHolder.getCurrentSpan(); if (current == null) { if (log.isTraceEnabled()) { log.trace( "Span in the context is null so something has already detached the span. " + "Won't do anything about it"); } return null; } if (!span.equals(current)) { ExceptionUtils.warn( "Tried to detach trace span but " + "it is not the current span: " + span + ". You may have forgotten to close or detach " + current); } else { OpenCensusSleuthSpanContextHolder.removeCurrentSpan(); } return span.getSavedSpan(); }
@Bean public ArrayListSpanReporter spanReporter() { return new ArrayListSpanReporter(); }
private String getName(URI uri) { // The returned name should comply with RFC 882 - Section 3.1.2. // i.e Header values must composed of printable ASCII values. return SpanNameUtil.shorten(uriScheme(uri) + ":" + uri.getRawPath()); }
@Override public String toString() { return "ArrayListSpanAccumulator{" + "spans=" + getSpans() + '}'; }
@Override public void parse(MethodInvocation pjp, NewSpan newSpan, SpanCustomizer span) { String name = newSpan == null || StringUtils.isEmpty(newSpan.name()) ? pjp.getMethod().getName() : newSpan.name(); String changedName = SpanNameUtil.toLowerHyphen(name); if (log.isDebugEnabled()) { log.debug("For the class [" + pjp.getThis().getClass() + "] method " + "[" + pjp.getMethod().getName() + "] will name the span [" + changedName + "]"); } span.name(changedName); }
Span current = OpenCensusSleuthSpanContextHolder.getCurrentSpan(); if (current == null || !span.equals(current)) { ExceptionUtils.warn( "Tried to close span but it is not the current span: " + span
public static String toLowerHyphen(String name) { StringBuilder result = new StringBuilder(); for (int i = 0; i < name.length(); i++) { char c = name.charAt(i); if (Character.isUpperCase(c)) { if (i != 0) { result.append('-'); } result.append(Character.toLowerCase(c)); } else { result.append(c); } } return SpanNameUtil.shorten(result.toString()); }
@Test public void testShouldNotFailToCloseSpanForTwoConsecutiveConnections() { contextRunner.run(context -> { DataSource dataSource = context.getBean(DataSource.class); ArrayListSpanReporter spanReporter = context.getBean(ArrayListSpanReporter.class); Connection connection1 = dataSource.getConnection(); Connection connection2 = dataSource.getConnection(); connection1.close(); connection2.close(); assertThat(spanReporter.getSpans()).hasSize(2); Span connectionSpan = spanReporter.getSpans().get(0); Span statementSpan = spanReporter.getSpans().get(1); assertThat(connectionSpan.name()).isEqualTo("jdbc:/test/connection"); assertThat(statementSpan.name()).isEqualTo("jdbc:/test/connection"); }); }
@Around("execution (@org.springframework.scheduling.annotation.Scheduled * *.*(..))") public Object traceBackgroundThread(final ProceedingJoinPoint pjp) throws Throwable { if (this.skipPattern.matcher(pjp.getTarget().getClass().getName()).matches()) { return pjp.proceed(); } String spanName = SpanNameUtil.toLowerHyphen(pjp.getSignature().getName()); Span span = startOrContinueRenamedSpan(spanName); try (Tracer.SpanInScope ws = this.tracer.withSpanInScope(span.start())) { span.tag(CLASS_KEY, pjp.getTarget().getClass().getSimpleName()); span.tag(METHOD_KEY, pjp.getSignature().getName()); return pjp.proceed(); } finally { span.finish(); } }
private String messageChannelName(MessageChannel channel) { return SpanNameUtil.shorten(channelName(channel)); }
String name(ProceedingJoinPoint pjp) { return this.spanNamer.name(getMethod(pjp, pjp.getTarget()), SpanNameUtil.toLowerHyphen(pjp.getSignature().getName())); }
private String getName(URI uri) { // The returned name should comply with RFC 882 - Section 3.1.2. // i.e Header values must composed of printable ASCII values. return SpanNameUtil.shorten(uriScheme(uri) + ":" + uri.getRawPath()); }
@Override public void parse(MethodInvocation pjp, NewSpan newSpan, SpanCustomizer span) { String name = newSpan == null || StringUtils.isEmpty(newSpan.name()) ? pjp.getMethod().getName() : newSpan.name(); String changedName = SpanNameUtil.toLowerHyphen(name); if (log.isDebugEnabled()) { log.debug("For the class [" + pjp.getThis().getClass() + "] method " + "[" + pjp.getMethod().getName() + "] will name the span [" + changedName + "]"); } span.name(changedName); }
public static String toLowerHyphen(String name) { StringBuilder result = new StringBuilder(); for (int i = 0; i < name.length(); i++) { char c = name.charAt(i); if (Character.isUpperCase(c)) { if (i != 0) { result.append('-'); } result.append(Character.toLowerCase(c)); } else { result.append(c); } } return SpanNameUtil.shorten(result.toString()); }
@Around("execution (@org.springframework.scheduling.annotation.Scheduled * *.*(..))") public Object traceBackgroundThread(final ProceedingJoinPoint pjp) throws Throwable { if (this.skipPattern.matcher(pjp.getTarget().getClass().getName()).matches()) { return pjp.proceed(); } String spanName = SpanNameUtil.toLowerHyphen(pjp.getSignature().getName()); Span span = startOrContinueRenamedSpan(spanName); try (Tracer.SpanInScope ws = this.tracer.withSpanInScope(span.start())) { span.tag(CLASS_KEY, pjp.getTarget().getClass().getSimpleName()); span.tag(METHOD_KEY, pjp.getSignature().getName()); return pjp.proceed(); } finally { span.finish(); } }
@Override @javax.annotation.Nullable public Span createSpan(String name, /*@Nullable*/ Sampler sampler) { String shortenedName = SpanNameUtil.shorten(name); Span span; if (isTracing()) { span = createChild(getCurrentSpan(), shortenedName); } else { long id = createId(); span = Span.builder() .name(shortenedName) .traceIdHigh(this.traceId128 ? createTraceIdHigh() : 0L) .traceId(id) .spanId(id) .build(); if (sampler == null) { sampler = this.defaultSampler; } span = sampledSpan(span, sampler); this.spanLogger.logStartedSpan(null, span); } return continueSpan(span); }
String shortenedName = SpanNameUtil.shorten(name); long id = createId(); if (parent == null) {