Skip to content

Commit 9352e18

Browse files
Merge branch 'master' into alexeyk/groovy-4
# Conflicts: # buildSrc/call-site-instrumentation-plugin/build.gradle.kts # dd-java-agent/instrumentation/kafka/kafka-clients-0.11/build.gradle # telemetry/src/test/groovy/datadog/telemetry/dependency/DependencyResolverSpecification.groovy
2 parents aa5bcbf + 5f0a539 commit 9352e18

File tree

18 files changed

+92
-49
lines changed

18 files changed

+92
-49
lines changed

buildSrc/call-site-instrumentation-plugin/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ dependencies {
3636

3737
testImplementation(libs.bytebuddy)
3838
testImplementation(libs.bundles.groovy)
39-
testImplementation(libs.spock.core)
40-
testImplementation("org.objenesis", "objenesis", "3.0.1")
39+
testImplementation(libs.bundles.spock)
4140
testImplementation("javax.servlet", "javax.servlet-api", "3.0.1")
4241
testImplementation("com.github.spotbugs", "spotbugs-annotations", "4.2.0")
4342
}

communication/src/main/java/datadog/communication/monitor/DDAgentStatsDClientManager.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import static datadog.trace.bootstrap.instrumentation.api.WriterConstants.LOGGING_WRITER_TYPE;
44

55
import datadog.trace.api.Config;
6+
import datadog.trace.api.ProcessTags;
67
import datadog.trace.api.StatsDClient;
78
import datadog.trace.api.StatsDClientManager;
89
import datadog.trace.api.cache.DDCache;
910
import datadog.trace.api.cache.DDCaches;
11+
import java.util.List;
1012
import java.util.concurrent.ConcurrentHashMap;
1113
import java.util.concurrent.atomic.AtomicInteger;
1214
import java.util.function.Function;
@@ -52,8 +54,30 @@ public StatsDClient statsDClient(
5254
nameMapping = new NameResolver(namespace);
5355
}
5456

55-
if (null != constantTags && constantTags.length > 0) {
56-
tagMapping = new TagCombiner(constantTags);
57+
final List<String> processTags = ProcessTags.getTagsAsStringList();
58+
final int processTagSize = processTags != null ? processTags.size() : 0;
59+
String[] finalConstantTags = constantTags;
60+
if (processTagSize > 0) {
61+
final int constantTagSize = constantTags != null ? constantTags.length : 0;
62+
if (constantTagSize == 0) {
63+
finalConstantTags = processTags.toArray(new String[0]);
64+
} else {
65+
final int tagSizeSum = processTagSize + constantTagSize;
66+
finalConstantTags = new String[tagSizeSum];
67+
int pos = 0;
68+
// copy constant tags
69+
for (; pos < constantTagSize; pos++) {
70+
finalConstantTags[pos] = constantTags[pos];
71+
}
72+
// copy process tags
73+
for (int i = 0; i < processTagSize; i++) {
74+
finalConstantTags[pos + i] = processTags.get(i);
75+
}
76+
}
77+
}
78+
79+
if (null != finalConstantTags && finalConstantTags.length > 0) {
80+
tagMapping = new TagCombiner(finalConstantTags);
5781
}
5882

5983
if (USE_LOGGING_CLIENT) {

communication/src/test/groovy/datadog/communication/monitor/DDAgentStatsDClientTest.groovy

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package datadog.communication.monitor
22

3+
import static datadog.trace.api.config.GeneralConfig.EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED
34

5+
import datadog.trace.api.ProcessTags
46
import datadog.trace.test.util.DDSpecification
57

68
import static datadog.trace.api.config.GeneralConfig.DOGSTATSD_START_DELAY
@@ -109,13 +111,44 @@ class DDAgentStatsDClientTest extends DDSpecification {
109111
where:
110112
// spotless:off
111113
namespace | constantTags | expectedMetricName | expectedCheckName | expectedTags
112-
null | null | "test.metric" | "test.check" | "jmx_domain:java.nio,type:BufferPool"
113-
null | ["lang:java", "lang_version:1.8.0"] | "test.metric" | "test.check" | "jmx_domain:java.nio,type:BufferPool,lang:java,lang_version:1.8.0"
114-
"example" | null | "example.test.metric" | "example.test.check" | "jmx_domain:java.nio,type:BufferPool"
115-
"example" | ["lang:java", "lang_version:1.8.0"] | "example.test.metric" | "example.test.check" | "jmx_domain:java.nio,type:BufferPool,lang:java,lang_version:1.8.0"
114+
null | null | "test.metric" | "test.check" | "jmx_domain:java.nio,type:BufferPool,${ProcessTags.getTagsForSerialization().toString()}"
115+
null | ["lang:java", "lang_version:1.8.0"] | "test.metric" | "test.check" | "jmx_domain:java.nio,type:BufferPool,lang:java,lang_version:1.8.0,${ProcessTags.getTagsForSerialization().toString()}"
116+
"example" | null | "example.test.metric" | "example.test.check" | "jmx_domain:java.nio,type:BufferPool,${ProcessTags.getTagsForSerialization().toString()}"
117+
"example" | ["lang:java", "lang_version:1.8.0"] | "example.test.metric" | "example.test.check" | "jmx_domain:java.nio,type:BufferPool,lang:java,lang_version:1.8.0,${ProcessTags.getTagsForSerialization().toString()}"
116118
// spotless:on
117119
}
118120

121+
def "single statsd client without process tags"() {
122+
setup:
123+
injectSysConfig(DOGSTATSD_START_DELAY, '0')
124+
injectSysConfig(EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED, "false")
125+
def server = new StatsDServer()
126+
server.start()
127+
ProcessTags.reset()
128+
129+
def client = statsDClientManager().statsDClient('127.0.0.1', server.socket.localPort, null, namespace, constantTags as String[], false)
130+
131+
String metricName = "test.metric"
132+
String[] tags = ["test:true"]
133+
134+
when:
135+
client.incrementCounter(metricName, tags)
136+
137+
then:
138+
server.waitForMessage().startsWith("$expectedMetricName:1|c|#$expectedTags")
139+
140+
cleanup:
141+
injectSysConfig(EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED, "true")
142+
ProcessTags.reset()
143+
client.close()
144+
server.close()
145+
146+
where:
147+
namespace | constantTags | expectedMetricName | expectedTags
148+
null | null | "test.metric" | "test:true"
149+
null | ["lang:java", "lang_version:1.8.0"] | "test.metric" | "test:true,lang:java,lang_version:1.8.0"
150+
}
151+
119152
def "single statsd client with event"() {
120153
setup:
121154
injectSysConfig(DOGSTATSD_START_DELAY, '0')

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/ConcurrentCoverageStore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.util.Map;
1010
import java.util.concurrent.ConcurrentHashMap;
1111
import java.util.function.Function;
12-
import org.jetbrains.annotations.Nullable;
12+
import javax.annotation.Nullable;
1313

1414
/** A store that keeps track of coverage probes allocated for multiple threads. */
1515
public abstract class ConcurrentCoverageStore<T extends CoverageProbes> implements CoverageStore {

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/file/FileCoverageStore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import java.util.List;
2121
import java.util.Set;
2222
import java.util.function.Function;
23-
import org.jetbrains.annotations.Nullable;
23+
import javax.annotation.Nullable;
2424
import org.slf4j.Logger;
2525
import org.slf4j.LoggerFactory;
2626

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/line/LineCoverageStore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
import java.util.Map;
2525
import java.util.concurrent.ConcurrentHashMap;
2626
import java.util.function.Function;
27+
import javax.annotation.Nullable;
2728
import org.jacoco.core.analysis.Analyzer;
2829
import org.jacoco.core.data.ExecutionDataStore;
29-
import org.jetbrains.annotations.Nullable;
3030
import org.slf4j.Logger;
3131
import org.slf4j.LoggerFactory;
3232

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/report/NoOpCoverageProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import datadog.trace.api.civisibility.domain.BuildModuleLayout;
44
import datadog.trace.civisibility.config.ExecutionSettings;
5-
import org.jetbrains.annotations.Nullable;
5+
import javax.annotation.Nullable;
66

77
public class NoOpCoverageProcessor implements CoverageProcessor {
88

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/execution/ExecutionOutcomeImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import datadog.trace.api.civisibility.execution.TestExecutionHistory;
44
import datadog.trace.api.civisibility.telemetry.tag.RetryReason;
5-
import org.jetbrains.annotations.Nullable;
5+
import javax.annotation.Nullable;
66

77
class ExecutionOutcomeImpl implements TestExecutionHistory.ExecutionOutcome {
88

dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@
4747
import java.util.Set;
4848
import java.util.TreeSet;
4949
import java.util.stream.Collectors;
50+
import javax.annotation.Nonnull;
5051
import net.bytebuddy.agent.builder.AgentBuilder;
5152
import net.bytebuddy.agent.builder.AgentBuilder.InitializationStrategy;
5253
import net.bytebuddy.agent.builder.AgentBuilder.RedefinitionStrategy;
5354
import net.bytebuddy.agent.builder.AgentBuilder.TypeStrategy;
5455
import net.bytebuddy.asm.Advice;
5556
import net.bytebuddy.matcher.ElementMatcher.Junction.Conjunction;
56-
import org.jetbrains.annotations.NotNull;
5757
import org.joor.Reflect;
5858
import org.junit.jupiter.api.BeforeEach;
5959
import org.junit.jupiter.api.Disabled;
@@ -248,7 +248,7 @@ public void testDuplicateInstrumentations()
248248
assertEquals(probe1, probe2);
249249
}
250250

251-
@NotNull
251+
@Nonnull
252252
private static CodeOriginProbe[] codeOriginProbes(String type) {
253253
CodeOriginProbe entry =
254254
new CodeOriginProbe(CODE_ORIGIN_ID1, true, Where.of(type, "entry", "()", "53"));

dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/probe/LogProbeTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import datadog.trace.bootstrap.instrumentation.api.Tags;
3131
import datadog.trace.core.CoreTracer;
3232
import java.util.stream.Stream;
33-
import org.jetbrains.annotations.NotNull;
33+
import javax.annotation.Nonnull;
3434
import org.junit.jupiter.api.Assertions;
3535
import org.junit.jupiter.api.Test;
3636
import org.junit.jupiter.params.ParameterizedTest;
@@ -109,7 +109,7 @@ public void budgets() {
109109
}
110110
}
111111

112-
@NotNull
112+
@Nonnull
113113
private Result getResult(
114114
TracerAPI tracer, String sessionId, boolean captureSnapshot, Integer line) {
115115
BudgetSink sink = new BudgetSink(getConfig(), mock(ProbeStatusSink.class));

0 commit comments

Comments
 (0)