io.opentracing.Span.finish()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(8.5k)|赞(0)|评价(0)|浏览(127)

本文整理了Java中io.opentracing.Span.finish()方法的一些代码示例,展示了Span.finish()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Span.finish()方法的具体详情如下:
包路径:io.opentracing.Span
类名称:Span
方法名:finish

Span.finish介绍

[英]Sets the end timestamp to now and records the span.

With the exception of calls to #context, this should be the last call made to the span instance. Future calls to #finish are defined as noops, and future calls to methods other than #contextlead to undefined behavior.
[中]将结束时间戳设置为“现在”,并记录跨度。
除了对#context的调用之外,这应该是对span实例的最后一次调用。未来对#finish的调用被定义为noop,未来对#contexts以外的方法的调用会导致未定义的行为。

代码示例

代码示例来源:origin: apache/incubator-shardingsphere

@Override
public void finishSuccess(final SQLStatement sqlStatement, final ShardingTableMetaData shardingTableMetaData) {
  span.finish();
}

代码示例来源:origin: oracle/helidon

protected void finishSpan(Span span, List<String> logs) {
  if (null == span) {
    return;
  }
  logs.forEach(span::log);
  span.finish();
}

代码示例来源:origin: apache/incubator-shardingsphere

@Override
  public void finishFailure(final Exception cause) {
    ShardingErrorSpan.setError(span, cause);
    span.finish();
  }
}

代码示例来源:origin: apache/incubator-shardingsphere

@Override
public void finishSuccess() {
  span.finish();
  if (null != activeSpan) {
    activeSpan.deactivate();
  }
}

代码示例来源:origin: stagemonitor/stagemonitor

@Override
public void finish() {
  durationNanos = System.nanoTime() - startTimestampNanos;
  for (SpanEventListener spanEventListener : spanEventListeners) {
    spanEventListener.onFinish(this, operationName, durationNanos);
  }
  delegate.finish();
}

代码示例来源:origin: stagemonitor/stagemonitor

@Override
public void finish(long finishMicros) {
  durationNanos = TimeUnit.MICROSECONDS.toNanos(finishMicros) - startTimestampNanos;
  for (SpanEventListener spanEventListener : spanEventListeners) {
    spanEventListener.onFinish(this, operationName, durationNanos);
  }
  delegate.finish(finishMicros);
}

代码示例来源:origin: oracle/helidon

@Override
public void finish(long finishMicros) {
  span.log("ss");
  span.finish(finishMicros);
}

代码示例来源:origin: oracle/helidon

@Override
public void finish() {
  span.log("ss");
  span.finish();
}

代码示例来源:origin: apache/incubator-shardingsphere

@Override
  public void finishFailure(final Exception cause) {
    ShardingErrorSpan.setError(span, cause);
    span.finish();
    if (null != activeSpan) {
      activeSpan.deactivate();
    }
  }
}

代码示例来源:origin: jersey/jersey

/**
 * Resource method with explicit child span creation.
 *
 * @param context injected request context with resource-level (parent) span reference
 * @return dummy response
 * @throws InterruptedException if interrupted
 */
@GET
@Path("childSpan")
public Response childSpan(@Context ContainerRequestContext context) throws InterruptedException {
  final Span childSpan = OpenTracingUtils.getRequestChildSpan(context, "AppCreatedSpan");
  childSpan.log("Starting expensive operation.");
  // Do the business
  Thread.sleep(200);
  childSpan.log("Expensive operation finished.");
  childSpan.setTag("expensiveOperationSuccess", true);
  childSpan.finish();
  return Response.ok("SUCCESS").build();
}

代码示例来源:origin: oracle/helidon

private void finishSpanWithError(Span readSpan, Throwable t) {
  Tags.ERROR.set(readSpan, Boolean.TRUE);
  readSpan.log(CollectionsHelper.mapOf("event", "error",
                     "error.kind", "Exception",
                     "error.object", t,
                     "message", t.toString()));
  readSpan.finish();
}

代码示例来源:origin: oracle/helidon

static void traceError(Span span, Throwable throwable) {
  // failed
  Tags.ERROR.set(span, true);
  span.log(CollectionsHelper.mapOf("event", "error",
                   "error.object", throwable));
  span.finish();
}

代码示例来源:origin: oracle/helidon

private void atnSpanFinish(Span atnSpan, AuthenticationResponse response) {
  response.user()
      .ifPresent(subject -> atnSpan
          .log("security.user: " + subject.principal().getName()));
  response.service()
      .ifPresent(subject -> atnSpan.log("security.service: " + subject.principal().getName()));
  atnSpan.log("status: " + response.status());
  atnSpan.finish();
}

代码示例来源:origin: stagemonitor/stagemonitor

@Test
public void testUpdateSpan() throws Exception {
  final Span span = tracer.buildSpan("Test#test")
      .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
      .start();
  span.finish();
  elasticsearchClient.waitForCompletion();
  refresh();
  reporter.updateSpan(B3HeaderFormat.getB3Identifiers(tracer, span), null, Collections.singletonMap("foo", "bar"));
  refresh();
  final JsonNode hits = elasticsearchClient.getJson("/stagemonitor-spans*/_search").get("hits");
  assertThat(hits.get("total").intValue()).as(hits.toString()).isEqualTo(1);
  final JsonNode spanJson = hits.get("hits").elements().next().get("_source");
  assertThat(spanJson.get("foo").asText()).as(spanJson.toString()).isEqualTo("bar");
}

代码示例来源:origin: oracle/helidon

static void traceError(Span span, Throwable throwable, String description) {
    // failed
    if (null != throwable) {
      Tags.ERROR.set(span, true);
      span.log(CollectionsHelper.mapOf("event", "error",
                       "error.object", throwable));
    } else {
      Tags.ERROR.set(span, true);
      span.log(CollectionsHelper.mapOf("event", "error",
                       "message", description,
                       "error.kind", "SecurityException"));
    }
    span.finish();
  }
}

代码示例来源:origin: stagemonitor/stagemonitor

@Test
public void testUpdateNotYetExistentSpan_eventuallyUpdates() throws Exception {
  final Span span = tracer.buildSpan("Test#test")
      .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
      .start();
  reporter.updateSpan(B3HeaderFormat.getB3Identifiers(tracer, span), null, Collections.singletonMap("foo", "bar"));
  span.finish();
  elasticsearchClient.waitForCompletion();
  refresh();
  reporter.getUpdateReporter().flush();
  refresh();
  final JsonNode hits = elasticsearchClient.getJson("/stagemonitor-spans*/_search").get("hits");
  assertThat(hits.get("total").intValue()).as(hits.toString()).isEqualTo(1);
  final JsonNode spanJson = hits.get("hits").elements().next().get("_source");
  assertThat(spanJson.get("foo").asText()).as(spanJson.toString()).isEqualTo("bar");
}

代码示例来源:origin: stagemonitor/stagemonitor

private void reportSpan() {
  final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/test");
  request.addHeader(WidgetAjaxSpanReporter.CONNECTION_ID, connectionId);
  final MonitoredHttpRequest monitoredHttpRequest = new MonitoredHttpRequest(request,
      mock(StatusExposingByteCountingServletResponse.class), new MockFilterChain(), configuration, mock(ExecutorService.class));
  span = monitoredHttpRequest.createScope().span();
  span.setOperationName("test");
  span.finish();
}

代码示例来源:origin: stagemonitor/stagemonitor

@Test
  public void testInternalTags() throws Exception {
    spanWrappingTracer.buildSpan("test")
        .withTag(SpanWrapper.INTERNAL_TAG_PREFIX + "foo", "foo")
        .withTag("foo", "foo")
        .start()
        .setTag(SpanWrapper.INTERNAL_TAG_PREFIX + "bar", "bar")
        .setTag("bar", "bar")
        .finish();
    final List<MockSpan> mockSpans = mockTracer.finishedSpans();
    assertThat(mockSpans).hasSize(1);
    final Map<String, Object> tags = mockSpans.get(0).tags();
    assertThat(tags).doesNotContainKeys(SpanWrapper.INTERNAL_TAG_PREFIX + "foo", SpanWrapper.INTERNAL_TAG_PREFIX + "bar");
    assertThat(tags).containsKeys("foo", "bar");
  }
}

代码示例来源:origin: stagemonitor/stagemonitor

private SpanContextInformation reportSpan(long executionTimeMs, CallStackElement callTree, String operationName) {
  final Tracer tracer = tracingPlugin.getTracer();
  final Span span;
  Tracer.SpanBuilder spanBuilder = tracer.buildSpan(operationName)
      .withStartTimestamp(1);
  spanBuilder = setStartTags(spanBuilder);
  span = spanBuilder
      .start();
  final SpanContextInformation spanContextInformation = SpanContextInformation.forSpan(span);
  spanContextInformation.setCallTree(callTree);
  // implicitly reports
  span.finish(TimeUnit.MILLISECONDS.toMicros(executionTimeMs) + 1);
  return spanContextInformation;
}

代码示例来源:origin: jersey/jersey

@Override
  public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
    final Object spanProperty = requestContext.getProperty(OpenTracingFeature.SPAN_CONTEXT_PROPERTY);
    if (spanProperty != null && spanProperty instanceof Span) {
      ((Span) spanProperty)
          .setTag(Tags.HTTP_STATUS.getKey(), responseContext.getStatus())
          .setTag(LocalizationMessages.OPENTRACING_TAG_HAS_RESPONSE_ENTITY(), responseContext.hasEntity())
          .setTag(LocalizationMessages.OPENTRACING_TAG_RESPONSE_LENGTH(), responseContext.getLength())
          .setTag(LocalizationMessages.OPENTRACING_TAG_RESPONSE_HEADERS(),
              OpenTracingUtils.headersAsString(responseContext.getHeaders()))
          .finish();
    }
  }
}

相关文章