本文整理了Java中com.nike.wingtips.Tracer.completeRequestSpan()
方法的一些代码示例,展示了Tracer.completeRequestSpan()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Tracer.completeRequestSpan()
方法的具体详情如下:
包路径:com.nike.wingtips.Tracer
类名称:Tracer
方法名:completeRequestSpan
[英]Completes the current span by calling #completeAndLogSpan(Span,boolean) on it, empties the MDC by calling #unconfigureMDC(), and clears out the #currentSpanStackThreadLocal stack.
This should be called by the overall request when the request is done. At the point this method is called there should just be one span left on the #currentSpanStackThreadLocal stack - the overall request span. If there is more than 1 then that indicates a bug with the usage of this class where a child span is created but not completed. If this error case is detected then and all spans will be logged/popped and an error message will be logged with details on what went wrong.
[中]通过调用#completeAndLogSpan(span,布尔值)来完成当前span,通过调用#unconfigureMDC()清空MDC,并清除#currentSpanStackThreadLocal堆栈。
当请求完成时,应该由整体请求调用。在调用此方法时,#currentSpanStackThreadLocal堆栈上应该只剩下一个跨度,即整个请求跨度。如果超过1,则表示该类的使用存在错误,其中创建了一个子跨度,但尚未完成。如果检测到此错误情况,则会记录/弹出所有跨度,并记录错误消息,详细说明出错原因。
代码示例来源:origin: com.nike.riposte/riposte-core
protected void completeCurrentSpan() {
Tracer.getInstance().completeRequestSpan();
}
代码示例来源:origin: Nike-Inc/riposte
protected void completeCurrentSpan() {
Tracer.getInstance().completeRequestSpan();
}
代码示例来源:origin: Nike-Inc/wingtips
@Override
public void run() {
Span span = Tracer.getInstance().getCurrentSpan();
try {
// Handle response/error tagging and final span name.
tagAndNamingStrategy.handleResponseTaggingAndFinalSpanName(
span, httpRequest, httpResponse, error, tagAndNamingAdapter
);
}
finally {
// Complete the overall request span.
Tracer.getInstance().completeRequestSpan();
}
}
},
代码示例来源:origin: Nike-Inc/riposte
private void resetTracingAndMdc() {
MDC.clear();
Tracer.getInstance().completeRequestSpan();
}
代码示例来源:origin: Nike-Inc/riposte
private void resetTracingAndMdc() {
MDC.clear();
Tracer.getInstance().completeRequestSpan();
}
代码示例来源:origin: Nike-Inc/riposte
private void resetTracingAndMdc() {
MDC.clear();
Tracer.getInstance().completeRequestSpan();
}
代码示例来源:origin: Nike-Inc/riposte
private void resetTracingAndMdc() {
MDC.clear();
Tracer.getInstance().completeRequestSpan();
}
代码示例来源:origin: Nike-Inc/riposte
Tracer.getInstance().completeRequestSpan();
代码示例来源:origin: Nike-Inc/riposte
@Test
public void doChannelInactive_does_not_try_to_recomplete_span_if_already_completed() throws Exception {
// given
Span span = setupTracingForChannelInactive(false);
Deque<Span> deque = new LinkedList<>();
deque.add(span);
Tracer.getInstance().registerWithThread(deque);
Tracer.getInstance().completeRequestSpan();
Assertions.assertThat(span.isCompleted()).isTrue();
long durationNanosBefore = span.getDurationNanos();
// when
PipelineContinuationBehavior result = handler.doChannelInactive(ctxMock);
// then
Assertions.assertThat(span.isCompleted()).isTrue(); // no change
Assertions.assertThat(span.getDurationNanos()).isEqualTo(durationNanosBefore);
verify(requestInfoMock).releaseAllResources();
verify(proxyRouterStateMock).cancelRequestStreaming(any(), any());
verify(proxyRouterStateMock).cancelDownstreamRequest(any());
Assertions.assertThat(result).isEqualTo(PipelineContinuationBehavior.CONTINUE);
}
代码示例来源:origin: Nike-Inc/wingtips
@Test
public void spanLifecycleListener_spanCompleted_is_not_called_when_request_span_was_completed_already() {
// given
SpanLifecycleListener listener1 = mock(SpanLifecycleListener.class);
SpanLifecycleListener listener2 = mock(SpanLifecycleListener.class);
Tracer tracer = Tracer.getInstance();
tracer.addSpanLifecycleListener(listener1);
tracer.addSpanLifecycleListener(listener2);
Span span = tracer.startRequestWithRootSpan("newspan");
span.complete();
verify(listener1).spanStarted(span);
verify(listener1, times(0)).spanCompleted(span);
verify(listener2).spanStarted(span);
verify(listener2, times(0)).spanCompleted(span);
// when
tracer.completeRequestSpan();
// then
verify(listener1, never()).spanCompleted(span);
verify(listener2, never()).spanCompleted(span);
}
代码示例来源:origin: Nike-Inc/wingtips
@Test
public void spanLifecycleListener_spanCompleted_is_called_when_request_span_is_completed() {
// given
SpanLifecycleListener listener1 = mock(SpanLifecycleListener.class);
SpanLifecycleListener listener2 = mock(SpanLifecycleListener.class);
Tracer tracer = Tracer.getInstance();
tracer.addSpanLifecycleListener(listener1);
tracer.addSpanLifecycleListener(listener2);
Span span = tracer.startRequestWithRootSpan("newspan");
verify(listener1).spanStarted(span);
verify(listener1, times(0)).spanCompleted(span);
verify(listener2).spanStarted(span);
verify(listener2, times(0)).spanCompleted(span);
// when
tracer.completeRequestSpan();
// then
verify(listener1).spanCompleted(span);
verify(listener2).spanCompleted(span);
}
代码示例来源:origin: Nike-Inc/wingtips
@Test
public void getCurrentTracerManagedSpanStatus_works_as_expected_for_unmanaged() {
// given
Span manuallyCreatedSpan = Span.newBuilder("manuallyCreatedSpan", SpanPurpose.LOCAL_ONLY).build();
Span completedSpan = Tracer.getInstance().startRequestWithRootSpan("completedSpan");
Tracer.getInstance().completeRequestSpan();
// when
TracerManagedSpanStatus tmssManual = manuallyCreatedSpan.getCurrentTracerManagedSpanStatus();
TracerManagedSpanStatus tmssCompleted = completedSpan.getCurrentTracerManagedSpanStatus();
// then
assertThat(tmssManual).isEqualTo(TracerManagedSpanStatus.UNMANAGED_SPAN);
assertThat(tmssCompleted).isEqualTo(TracerManagedSpanStatus.UNMANAGED_SPAN);
}
代码示例来源:origin: Nike-Inc/wingtips
@Test
public void completeRequestSpan_should_complete_the_span() {
// given: an already-started span
Tracer.getInstance().startRequestWithRootSpan("somespan");
Span span = Tracer.getInstance().getCurrentSpan();
assertThat(span.getSpanName()).isEqualTo("somespan");
assertThat(getSpanStackSize()).isEqualTo(1);
assertThat(span.isCompleted()).isFalse();
// when: completeRequestSpan() is called
long beforeNanoTime = System.nanoTime();
Tracer.getInstance().completeRequestSpan();
long afterNanoTime = System.nanoTime();
// then: the span should be completed, the stack emptied, and the MDC unconfigured
assertThat(span.isCompleted()).isTrue();
verifyDurationBetweenLowerAndUpperBounds(span, beforeNanoTime, afterNanoTime);
assertThat(Tracer.getInstance().getCurrentSpan()).isNull();
assertThat(getSpanStackSize()).isEqualTo(0);
assertThat(MDC.get(Tracer.TRACE_ID_MDC_KEY)).isNull();
assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNull();
}
代码示例来源:origin: Nike-Inc/wingtips
@Test
public void starting_request_span_should_configure_MDC_and_completing_it_should_unset_MDC() throws Exception {
// given
Tracer tracer = Tracer.getInstance();
// when
tracer.startRequestWithRootSpan("test-span");
// then
assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNotNull();
// and when
tracer.completeRequestSpan();
// then
assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNull();
}
代码示例来源:origin: Nike-Inc/wingtips
@Test
public void getCurrentManagedStatusForSpan_works_as_expected_for_unmanaged() {
// given
Span manuallyCreatedSpan = Span.newBuilder("manuallyCreatedSpan", SpanPurpose.LOCAL_ONLY).build();
Span completedSpan = Tracer.getInstance().startRequestWithRootSpan("completedSpan");
Tracer.getInstance().completeRequestSpan();
// when
TracerManagedSpanStatus tmssManual = Tracer.getInstance().getCurrentManagedStatusForSpan(manuallyCreatedSpan);
TracerManagedSpanStatus tmssCompleted = Tracer.getInstance().getCurrentManagedStatusForSpan(completedSpan);
// then
assertThat(tmssManual).isEqualTo(TracerManagedSpanStatus.UNMANAGED_SPAN);
assertThat(tmssCompleted).isEqualTo(TracerManagedSpanStatus.UNMANAGED_SPAN);
}
代码示例来源:origin: Nike-Inc/wingtips
@Test
public void completeRequestSpan_should_do_nothing_if_there_is_no_span_to_complete() {
// given: no span started
assertThat(Tracer.getInstance().getCurrentSpan()).isNull();
assertThat(MDC.get(Tracer.TRACE_ID_MDC_KEY)).isNull();
assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNull();
assertThat(getSpanStackSize()).isEqualTo(0);
// when: completeRequestSpan() is called
Tracer.getInstance().completeRequestSpan();
// then: nothing should be done
assertThat(Tracer.getInstance().getCurrentSpan()).isNull();
assertThat(MDC.get(Tracer.TRACE_ID_MDC_KEY)).isNull();
assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNull();
assertThat(getSpanStackSize()).isEqualTo(0);
}
代码示例来源:origin: Nike-Inc/wingtips
Tracer.getInstance().completeRequestSpan();
long afterNanoTime = System.nanoTime();
代码示例来源:origin: Nike-Inc/wingtips
Tracer.getInstance().completeRequestSpan();
代码示例来源:origin: Nike-Inc/wingtips
private void resetTracer() {
Tracer.getInstance().completeRequestSpan();
Tracer.getInstance().setRootSpanSamplingStrategy(new SampleAllTheThingsStrategy());
for (SpanLifecycleListener listener : new ArrayList<>(Tracer.getInstance().getSpanLifecycleListeners())) {
Tracer.getInstance().removeSpanLifecycleListener(listener);
}
Tracer.getInstance().setSpanLoggingRepresentation(Tracer.SpanLoggingRepresentation.JSON);
}
代码示例来源:origin: Nike-Inc/wingtips
Tracer.getInstance().completeRequestSpan();
内容来源于网络,如有侵权,请联系作者删除!