8000 feat(redis-common): span add extension tags (#46) · dannylee-/java-redis-client@81fe341 · GitHub
[go: up one dir, main page]

Skip to content

Commit 81fe341

Browse files
duoyulimalafeev
authored andcommitted
feat(redis-common): span add extension tags (opentracing-contrib#46)
1 parent ceaf626 commit 81fe341

File tree

2 files changed

+36
-9
lines changed

2 files changed

+36
-9
lines changed

opentracing-redis-common/src/main/java/io/opentracing/contrib/redis/common/TracingConfiguration.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
package io.opentracing.contrib.redis.common;
1515

1616
import io.opentracing.Tracer;
17+
18+
import java.util.Map;
19+
import java.util.concurrent.ConcurrentHashMap;
1720
import java.util.function.Function;
1821

1922
public class TracingConfiguration {
@@ -22,13 +25,15 @@ public class TracingConfiguration {
2225
private final boolean traceWithActiveSpanOnly;
2326
private final int keysMaxLength;
2427
private final Function<String, String> spanNameProvider;
28+
private final Map<String, String> extensionTags;
2529

2630
private TracingConfiguration(Tracer tracer, boolean traceWithActiveSpanOnly, int keysMaxLength,
27-
Function<String, String> spanNameProvider) {
31+
Function<String, String> spanNameProvider,Map<String, String> extensionTags) {
2832
this.tracer = tracer;
2933
this.traceWithActiveSpanOnly = traceWithActiveSpanOnly;
3034
this.keysMaxLength = keysMaxLength;
3135
this.spanNameProvider = spanNameProvider;
36+
this.extensionTags = extensionTags;
3237
}
3338

3439
public Tracer getTracer() {
@@ -47,11 +52,21 @@ public Function<String, String> getSpanNameProvider() {
4752
return spanNameProvider;
4853
}
4954

55+
public Map<String, String> getExtensionTags() {
56+
return extensionTags;
57+
}
58+
59+
public TracingConfiguration extensionTag(String key, String value) {
60+
this.extensionTags.putIfAbsent(key, value);
61+
return this;
62+
}
63+
5064
public static class Builder {
5165
private final Tracer tracer;
5266
private boolean traceWithActiveSpanOnly;
5367
private int keysMaxLength = DEFAULT_KEYS_MAX_LENGTH;
5468
private Function<String, String> spanNameProvider = RedisSpanNameProvider.OPERATION_NAME;
69+
private Map<String, String> extensionTags = new ConcurrentHashMap<>();
5570

5671
public Builder(Tracer tracer) {
5772
this.tracer = tracer;
@@ -66,6 +81,18 @@ public Builder traceWithActiveSpanOnly(boolean traceWithActiveSpanOnly) {
6681
return this;
6782
}
6883

84+
/**
85+
* add tag
86+
*
87+
* @param key key
88+
* @param value value
89+
* @return this
90+
*/
91+
public Builder extensionTag(String key, String value) {
92+
this.extensionTags.putIfAbsent(key, value);
93+
return this;
94+
}
95+
6996
/**
7097
* Customize the span name, default is operation name ({@link RedisSpanNameProvider#OPERATION_NAME})
7198
*
@@ -94,7 +121,7 @@ public TracingConfiguration build() {
94121
keysMaxLength = DEFAULT_KEYS_MAX_LENGTH;
95122
}
96123
return new TracingConfiguration(tracer, traceWithActiveSpanOnly, keysMaxLength,
97-
spanNameProvider);
124+
spanNameProvider,extensionTags);
98125
}
99126
}
100127
}

opentracing-redis-common/src/main/java/io/opentracing/contrib/redis/common/TracingHelper.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,9 @@
1919
import io.opentracing.Tracer.SpanBuilder;
2020
import io.opentracing.noop.NoopSpan;
2121
import io.opentracing.tag.Tags;
22+
2223
import java.nio.charset.StandardCharsets;
23-
import java.util.ArrayList;
24-
import java.util.Arrays;
25-
import java.util.Collection;
26-
import java.util.HashMap;
27-
import java.util.List;
28-
import java.util.Map;
24+
import java.util.*;
2925
import java.util.Map.Entry;
3026
import java.util.function.Function;
3127
import java.util.function.Supplier;
@@ -40,19 +36,23 @@ public class TracingHelper {
4036
private final boolean traceWithActiveSpanOnly;
4137
private final Function<String, String> spanNameProvider;
4238
private final int maxKeysLength;
39+
private final Map<String, String> extensionTags;
4340

4441
public TracingHelper(TracingConfiguration tracingConfiguration) {
4542
this.tracer = tracingConfiguration.getTracer();
4643
this.traceWithActiveSpanOnly = tracingConfiguration.isTraceWithActiveSpanOnly();
4744
this.spanNameProvider = tracingConfiguration.getSpanNameProvider();
4845
this.maxKeysLength = tracingConfiguration.getKeysMaxLength();
46+
this.extensionTags = tracingConfiguration.getExtensionTags();
4947
}
5048

5149
private SpanBuilder builder(String operationName) {
52-
return tracer.buildSpan(spanNameProvider.apply(operationName))
50+
SpanBuilder sb = tracer.buildSpan(spanNameProvider.apply(operationName))
5351
.withTag(Tags.COMPONENT.getKey(), COMPONENT_NAME)
5452
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
5553
.withTag(Tags.DB_TYPE.getKey(), DB_TYPE);
54+
extensionTags.forEach(sb::withTag);
55+
return sb;
5656
}
5757

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

0 commit comments

Comments
 (0)
0