Skip to content

Commit e605ec2

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

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
@@ -5,6 +5,7 @@
55
import com.couchbase.client.core.Core;
66
import com.couchbase.client.core.cnc.RequestSpan;
77
import com.couchbase.client.core.cnc.RequestTracer;
8+
import datadog.trace.api.Config;
89
import datadog.trace.bootstrap.ContextStore;
910
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1011
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
@@ -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
@@ -6,6 +6,7 @@
66
import com.couchbase.client.core.Core;
77
import com.couchbase.client.core.cnc.RequestSpan;
88
import com.couchbase.client.core.cnc.RequestTracer;
9+
import datadog.trace.api.Config;
910
import datadog.trace.bootstrap.ContextStore;
1011
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1112
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
@@ -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
@@ -30,6 +30,7 @@
3030
import static datadog.trace.api.ConfigDefaults.DEFAULT_CIVISIBILITY_SOURCE_DATA_ROOT_CHECK_ENABLED;
3131
import static datadog.trace.api.ConfigDefaults.DEFAULT_CLIENT_IP_ENABLED;
3232
import static datadog.trace.api.ConfigDefaults.DEFAULT_CLOCK_SYNC_PERIOD;
33+
import static datadog.trace.api.ConfigDefaults.DEFAULT_COUCHBASE_INTERNAL_ENABLED;
3334
import static datadog.trace.api.ConfigDefaults.DEFAULT_CWS_ENABLED;
3435
import static datadog.trace.api.ConfigDefaults.DEFAULT_CWS_TLS_REFRESH;
3536
import static datadog.trace.api.ConfigDefaults.DEFAULT_DATA_STREAMS_BUCKET_DURATION;
@@ -328,6 +329,7 @@
328329
import static datadog.trace.api.config.RemoteConfigConfig.REMOTE_CONFIG_TARGETS_KEY_ID;
329330
import static datadog.trace.api.config.RemoteConfigConfig.REMOTE_CONFIG_URL;
330331
import static datadog.trace.api.config.TraceInstrumentationConfig.AXIS_PROMOTE_RESOURCE_NAME;
332+
import static datadog.trace.api.config.TraceInstrumentationConfig.COUCHBASE_INTERNAL_ENABLED;
331333
import static datadog.trace.api.config.TraceInstrumentationConfig.DB_CLIENT_HOST_SPLIT_BY_HOST;
332334
import static datadog.trace.api.config.TraceInstrumentationConfig.DB_CLIENT_HOST_SPLIT_BY_INSTANCE;
333335
import static datadog.trace.api.config.TraceInstrumentationConfig.DB_CLIENT_HOST_SPLIT_BY_INSTANCE_TYPE_SUFFIX;
@@ -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)