Skip to content

Commit c4c6a70

Browse files
committed
Add option to not include couchbase internal spans
1 parent 7de201e commit c4c6a70

File tree

5 files changed

+24
-0
lines changed

5 files changed

+24
-0
lines changed

dd-java-agent/instrumentation/couchbase/couchbase-3.1/src/main/java/datadog/trace/instrumentation/couchbase_31/client/DatadogRequestTracer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static datadog.trace.instrumentation.couchbase_31.client.CouchbaseClientDecorator.COUCHBASE_CLIENT;
44

5+
import datadog.trace.api.Config;
56
import com.couchbase.client.core.Core;
67
import com.couchbase.client.core.cnc.RequestSpan;
78
import com.couchbase.client.core.cnc.RequestTracer;
@@ -33,11 +34,15 @@ public RequestSpan requestSpan(String requestName, RequestSpan requestParent) {
3334
boolean measured = true;
3435
Object seedNodes = null;
3536

37+
final Config config = Config.get();
3638
AgentSpan parent = DatadogRequestSpan.unwrap(requestParent);
3739
if (null == parent) {
3840
parent = tracer.activeSpan();
3941
}
4042
if (null != parent && COUCHBASE_CLIENT.equals(parent.getTag(Tags.COMPONENT))) {
43+
if (!config.isCouchbaseInternalEnabled()) {
44+
return requestParent;
45+
}
4146
spanName = COUCHBASE_INTERNAL;
4247
measured = false;
4348
seedNodes = parent.getTag(InstrumentationTags.COUCHBASE_SEED_NODES);

dd-java-agent/instrumentation/couchbase/couchbase-3.2/src/main/java/datadog/trace/instrumentation/couchbase_32/client/DatadogRequestTracer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static datadog.trace.instrumentation.couchbase_32.client.CouchbaseClientDecorator.COUCHBASE_CLIENT;
44
import static datadog.trace.instrumentation.couchbase_32.client.CouchbaseClientDecorator.OPERATION_NAME;
55

6+
import datadog.trace.api.Config;
67
import com.couchbase.client.core.Core;
78
import com.couchbase.client.core.cnc.RequestSpan;
89
import com.couchbase.client.core.cnc.RequestTracer;
@@ -35,11 +36,15 @@ public RequestSpan requestSpan(String requestName, RequestSpan requestParent) {
3536
boolean measured = true;
3637
Object seedNodes = null;
3738

39+
final Config config = Config.get();
3840
AgentSpan parent = DatadogRequestSpan.unwrap(requestParent);
3941
if (null == parent) {
4042
parent = tracer.activeSpan();
4143
}
4244
if (null != parent && COUCHBASE_CLIENT.equals(parent.getTag(Tags.COMPONENT))) {
45+
if (!config.isCouchbaseInternalEnabled()) {
46+
return requestParent;
47+
}
4348
spanName = COUCHBASE_INTERNAL;
4449
measured = false;
4550
seedNodes = parent.getTag(InstrumentationTags.COUCHBASE_SEED_NODES);

dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ public final class ConfigDefaults {
214214

215215
static final float DEFAULT_TRACE_FLUSH_INTERVAL = 1;
216216

217+
static final boolean DEFAULT_COUCHBASE_INTERNAL_ENABLED = true;
217218
static final boolean DEFAULT_ELASTICSEARCH_BODY_ENABLED = false;
218219
static final boolean DEFAULT_ELASTICSEARCH_PARAMS_ENABLED = true;
219220
static final boolean DEFAULT_ELASTICSEARCH_BODY_AND_PARAMS_ENABLED = false;

dd-trace-api/src/main/java/datadog/trace/api/config/TraceInstrumentationConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ public final class TraceInstrumentationConfig {
125125
public static final String RESOLVER_RESET_INTERVAL = "resolver.reset.interval";
126126
public static final String RESOLVER_NAMES_ARE_UNIQUE = "resolver.names.are.unique";
127127

128+
public static final String COUCHBASE_INTERNAL_ENABLED = "trace.couchbase.internal.enabled";
129+
128130
public static final String ELASTICSEARCH_BODY_ENABLED = "trace.elasticsearch.body.enabled";
129131
public static final String ELASTICSEARCH_PARAMS_ENABLED = "trace.elasticsearch.params.enabled";
130132
public static final String ELASTICSEARCH_BODY_AND_PARAMS_ENABLED =

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import static datadog.trace.api.ConfigDefaults.DEFAULT_DEBUGGER_UPLOAD_TIMEOUT;
5656
import static datadog.trace.api.ConfigDefaults.DEFAULT_DEBUGGER_VERIFY_BYTECODE;
5757
import static datadog.trace.api.ConfigDefaults.DEFAULT_DOGSTATSD_START_DELAY;
58+
import static datadog.trace.api.ConfigDefaults.DEFAULT_COUCHBASE_INTERNAL_ENABLED;
5859
import static datadog.trace.api.ConfigDefaults.DEFAULT_ELASTICSEARCH_BODY_AND_PARAMS_ENABLED;
5960
import static datadog.trace.api.ConfigDefaults.DEFAULT_ELASTICSEARCH_BODY_ENABLED;
6061
import static datadog.trace.api.ConfigDefaults.DEFAULT_ELASTICSEARCH_PARAMS_ENABLED;
@@ -332,6 +333,7 @@
332333
import static datadog.trace.api.config.TraceInstrumentationConfig.DB_CLIENT_HOST_SPLIT_BY_INSTANCE;
333334
import static datadog.trace.api.config.TraceInstrumentationConfig.DB_CLIENT_HOST_SPLIT_BY_INSTANCE_TYPE_SUFFIX;
334335
import static datadog.trace.api.config.TraceInstrumentationConfig.DB_DBM_PROPAGATION_MODE_MODE;
336+
import static datadog.trace.api.config.TraceInstrumentationConfig.COUCHBASE_INTERNAL_ENABLED;
335337
import static datadog.trace.api.config.TraceInstrumentationConfig.ELASTICSEARCH_BODY_AND_PARAMS_ENABLED;
336338
import static datadog.trace.api.config.TraceInstrumentationConfig.ELASTICSEARCH_BODY_ENABLED;
337339
import static datadog.trace.api.config.TraceInstrumentationConfig.ELASTICSEARCH_PARAMS_ENABLED;
@@ -894,6 +896,7 @@ static class HostNameHolder {
894896
private final boolean longRunningTraceEnabled;
895897
private final long longRunningTraceInitialFlushInterval;
896898
private final long longRunningTraceFlushInterval;
899+
private final boolean couchbaseInternalEnabled;
897900
private final boolean elasticsearchBodyEnabled;
898901
private final boolean elasticsearchParamsEnabled;
899902
private final boolean elasticsearchBodyAndParamsEnabled;
@@ -981,6 +984,8 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins
981984
} else {
982985
secureRandom = configProvider.getBoolean(SECURE_RANDOM, DEFAULT_SECURE_RANDOM);
983986
}
987+
couchbaseInternalEnabled =
988+
configProvider.getBoolean(COUCHBASE_INTERNAL_ENABLED, DEFAULT_COUCHBASE_INTERNAL_ENABLED);
984989
elasticsearchBodyEnabled =
985990
configProvider.getBoolean(ELASTICSEARCH_BODY_ENABLED, DEFAULT_ELASTICSEARCH_BODY_ENABLED);
986991
elasticsearchParamsEnabled =
@@ -3287,6 +3292,10 @@ public BitSet getGrpcClientErrorStatuses() {
32873292
return grpcClientErrorStatuses;
32883293
}
32893294

3295+
public boolean isCouchbaseInternalEnabled() {
3296+
return couchbaseInternalEnabled;
3297+
}
3298+
32903299
public boolean isElasticsearchBodyEnabled() {
32913300
return elasticsearchBodyEnabled;
32923301
}
@@ -4361,6 +4370,8 @@ public String toString() {
43614370
+ longRunningTraceInitialFlushInterval
43624371
+ ", longRunningTraceFlushInterval="
43634372
+ longRunningTraceFlushInterval
4373+
+ ", couchbaseInternalEnabled="
4374+
+ couchbaseInternalEnabled
43644375
+ ", elasticsearchBodyEnabled="
43654376
+ elasticsearchBodyEnabled
43664377
+ ", elasticsearchParamsEnabled="

0 commit comments

Comments
 (0)