private Span internalSpan()

in folsom-opencensus/src/main/java/com/spotify/folsom/opencensus/OpenCensusTracer.java [69:111]


  private Span internalSpan(
      final String name,
      final CompletionStage<?> future,
      final String operation,
      final String key,
      final byte[] value) {
    requireNonNull(name);
    requireNonNull(future);
    requireNonNull(operation);

    final io.opencensus.trace.Span ocSpan =
        TRACER.spanBuilder(name).setSpanKind(CLIENT).startSpan();

    ocSpan.putAttribute("component", stringAttributeValue("folsom"));
    ocSpan.putAttribute("peer.service", stringAttributeValue("memcache"));
    ocSpan.putAttribute("operation", stringAttributeValue(operation));
    if (key != null && includeKeys) {
      ocSpan.putAttribute("key", stringAttributeValue(key));
    }

    final Span span = new OpenCensusSpan(ocSpan, includeValues);

    if (value != null) {
      span.value(value);
    }

    future.whenComplete(
        (result, t) -> {
          if (result instanceof GetResult) {
            final GetResult<byte[]> getResult = (GetResult) result;
            span.value(getResult.getValue());
          }

          if (t == null) {
            span.success();
          } else {
            span.failure();
          }
          span.close();
        });

    return span;
  }