Skip to content

Commit

Permalink
Merge eb1e408 into 2cbbc04
Browse files Browse the repository at this point in the history
  • Loading branch information
duoyuli committed Sep 27, 2019
2 parents 2cbbc04 + eb1e408 commit bce2129
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
package io.opentracing.contrib.redis.common;

import io.opentracing.Tracer;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;

public class TracingConfiguration {
Expand All @@ -22,13 +25,15 @@ public class TracingConfiguration {
private final boolean traceWithActiveSpanOnly;
private final int keysMaxLength;
private final Function<String, String> spanNameProvider;
private final Map<String, String> extensionTags;

private TracingConfiguration(Tracer tracer, boolean traceWithActiveSpanOnly, int keysMaxLength,
Function<String, String> spanNameProvider) {
Function<String, String> spanNameProvider,Map<String, String> extensionTags) {
this.tracer = tracer;
this.traceWithActiveSpanOnly = traceWithActiveSpanOnly;
this.keysMaxLength = keysMaxLength;
this.spanNameProvider = spanNameProvider;
this.extensionTags = extensionTags;
}

public Tracer getTracer() {
Expand All @@ -47,11 +52,21 @@ public Function<String, String> getSpanNameProvider() {
return spanNameProvider;
}

public Map<String, String> getExtensionTags() {
return extensionTags;
}

public TracingConfiguration extensionTag(String key, String value) {
this.extensionTags.putIfAbsent(key, value);
return this;
}

public static class Builder {
private final Tracer tracer;
private boolean traceWithActiveSpanOnly;
private int keysMaxLength = DEFAULT_KEYS_MAX_LENGTH;
private Function<String, String> spanNameProvider = RedisSpanNameProvider.OPERATION_NAME;
private Map<String, String> extensionTags = new ConcurrentHashMap<>();

public Builder(Tracer tracer) {
this.tracer = tracer;
Expand All @@ -66,6 +81,18 @@ public Builder traceWithActiveSpanOnly(boolean traceWithActiveSpanOnly) {
return this;
}

/**
* add tag
*
* @param key key
* @param value value
* @return this
*/
public Builder extensionTag(String key, String value) {
this.extensionTags.putIfAbsent(key, value);
return this;
}

/**
* Customize the span name, default is operation name ({@link RedisSpanNameProvider#OPERATION_NAME})
*
Expand Down Expand Up @@ -94,7 +121,7 @@ public TracingConfiguration build() {
keysMaxLength = DEFAULT_KEYS_MAX_LENGTH;
}
return new TracingConfiguration(tracer, traceWithActiveSpanOnly, keysMaxLength,
spanNameProvider);
spanNameProvider,extensionTags);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,9 @@
import io.opentracing.Tracer.SpanBuilder;
import io.opentracing.noop.NoopSpan;
import io.opentracing.tag.Tags;

import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.Map.Entry;
import java.util.function.Function;
import java.util.function.Supplier;
Expand All @@ -40,19 +36,23 @@ public class TracingHelper {
private final boolean traceWithActiveSpanOnly;
private final Function<String, String> spanNameProvider;
private final int maxKeysLength;
private final Map<String, String> extensionTags;

public TracingHelper(TracingConfiguration tracingConfiguration) {
this.tracer = tracingConfiguration.getTracer();
this.traceWithActiveSpanOnly = tracingConfiguration.isTraceWithActiveSpanOnly();
this.spanNameProvider = tracingConfiguration.getSpanNameProvider();
this.maxKeysLength = tracingConfiguration.getKeysMaxLength();
this.extensionTags = tracingConfiguration.getExtensionTags();
}

private SpanBuilder builder(String operationName) {
return tracer.buildSpan(spanNameProvider.apply(operationName))
SpanBuilder sb = tracer.buildSpan(spanNameProvider.apply(operationName))
.withTag(Tags.COMPONENT.getKey(), COMPONENT_NAME)
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
.withTag(Tags.DB_TYPE.getKey(), DB_TYPE);
extensionTags.forEach(sb::withTag);
return sb;
}

public Span buildSpan(String operationName, byte[][] keys) {
Expand Down

0 comments on commit bce2129

Please sign in to comment.