Skip to content

Commit fcfc767

Browse files
committed
Removes jctools usage for lock-free queues.
1 parent 89639f7 commit fcfc767

File tree

35 files changed

+1898
-61
lines changed

35 files changed

+1898
-61
lines changed

dd-java-agent/agent-builder/gradle.lockfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ org.jacoco:org.jacoco.agent:0.8.14=jacocoAgent,jacocoAnt
109109
org.jacoco:org.jacoco.ant:0.8.14=jacocoAnt
110110
org.jacoco:org.jacoco.core:0.8.14=jacocoAnt
111111
org.jacoco:org.jacoco.report:0.8.14=jacocoAnt
112-
org.jctools:jctools-core:3.3.0=runtimeClasspath,testRuntimeClasspath
113112
org.junit.jupiter:junit-jupiter-api:5.12.2=testCompileClasspath,testRuntimeClasspath
114113
org.junit.jupiter:junit-jupiter-engine:5.12.2=testRuntimeClasspath
115114
org.junit.jupiter:junit-jupiter-params:5.12.2=testCompileClasspath,testRuntimeClasspath

dd-java-agent/agent-debugger/gradle.lockfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ org.jacoco:org.jacoco.agent:0.8.14=jacocoAgent,jacocoAnt
123123
org.jacoco:org.jacoco.ant:0.8.14=jacocoAnt
124124
org.jacoco:org.jacoco.core:0.8.14=jacocoAnt
125125
org.jacoco:org.jacoco.report:0.8.14=jacocoAnt
126-
org.jctools:jctools-core:3.3.0=testRuntimeClasspath
127126
org.jetbrains.intellij.deps:trove4j:1.0.20200330=testRuntimeClasspath
128127
org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.21=testCompileClasspath,testRuntimeClasspath
129128
org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.21=testRuntimeClasspath

dd-java-agent/agent-llmobs/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ minimumInstructionCoverage = 0.0
1212

1313
dependencies {
1414
api libs.slf4j
15-
implementation libs.jctools
1615

1716
implementation project(':communication')
1817
implementation project(':components:json')

dd-java-agent/agent-llmobs/src/main/java/datadog/trace/llmobs/EvalProcessingWorker.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import datadog.communication.http.OkHttpUtils;
1313
import datadog.trace.api.Config;
1414
import datadog.trace.llmobs.domain.LLMObsEval;
15+
import datadog.trace.util.queue.MpscArrayQueue;
1516
import java.util.ArrayList;
1617
import java.util.List;
1718
import java.util.concurrent.TimeUnit;
@@ -20,7 +21,6 @@
2021
import okhttp3.OkHttpClient;
2122
import okhttp3.Request;
2223
import okhttp3.RequestBody;
23-
import org.jctools.queues.MpscBlockingConsumerArrayQueue;
2424
import org.slf4j.Logger;
2525
import org.slf4j.LoggerFactory;
2626

@@ -34,7 +34,7 @@ public class EvalProcessingWorker implements AutoCloseable {
3434

3535
private static final Logger log = LoggerFactory.getLogger(EvalProcessingWorker.class);
3636

37-
private final MpscBlockingConsumerArrayQueue<LLMObsEval> queue;
37+
private final MpscArrayQueue<LLMObsEval> queue;
3838
private final Thread serializerThread;
3939

4040
public EvalProcessingWorker(
@@ -43,7 +43,7 @@ public EvalProcessingWorker(
4343
final TimeUnit timeUnit,
4444
final SharedCommunicationObjects sco,
4545
Config config) {
46-
this.queue = new MpscBlockingConsumerArrayQueue<>(capacity);
46+
this.queue = new MpscArrayQueue<>(capacity);
4747

4848
boolean isAgentless = config.isLlmObsAgentlessEnabled();
4949
if (isAgentless && (config.getApiKey() == null || config.getApiKey().isEmpty())) {
@@ -98,7 +98,7 @@ public static class EvalSerializingHandler implements Runnable {
9898
private static final Logger log = LoggerFactory.getLogger(EvalSerializingHandler.class);
9999
private static final int FLUSH_THRESHOLD = 50;
100100

101-
private final MpscBlockingConsumerArrayQueue<LLMObsEval> queue;
101+
private final MpscArrayQueue<LLMObsEval> queue;
102102
private final long ticksRequiredToFlush;
103103
private long lastTicks;
104104

@@ -111,7 +111,7 @@ public static class EvalSerializingHandler implements Runnable {
111111
private final List<LLMObsEval> buffer = new ArrayList<>();
112112

113113
public EvalSerializingHandler(
114-
final MpscBlockingConsumerArrayQueue<LLMObsEval> queue,
114+
final MpscArrayQueue<LLMObsEval> queue,
115115
final long flushInterval,
116116
final TimeUnit timeUnit,
117117
final HttpUrl submissionUrl,

dd-java-agent/agent-profiling/profiling-controller-jfr/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ testJvmConstraints {
1414
dependencies {
1515
api project(':dd-java-agent:agent-profiling:profiling-controller')
1616

17-
implementation libs.jctools
1817
implementation libs.slf4j
1918

2019
annotationProcessor libs.autoservice.processor

dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/AnnotationSubstitutionProcessorInstrumentation.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public void methodAdvice(MethodTransformer transformer) {
3737
public String[] helperClassNames() {
3838
return new String[] {
3939
packageName + ".Target_com_datadog_profiling_agent_ProcessContext",
40-
packageName + ".Target_datadog_jctools_util_UnsafeRefArrayAccess",
4140
packageName + ".Target_org_datadog_jmxfetch_App",
4241
packageName + ".Target_org_datadog_jmxfetch_Status",
4342
packageName + ".Target_org_datadog_jmxfetch_reporter_JsonReporter",
@@ -52,7 +51,6 @@ public String[] muzzleIgnoredClassNames() {
5251
"jdk.vm.ci.meta.ResolvedJavaField",
5352
// ignore helper class names as usual
5453
packageName + ".Target_com_datadog_profiling_agent_ProcessContext",
55-
packageName + ".Target_datadog_jctools_util_UnsafeRefArrayAccess",
5654
packageName + ".Target_org_datadog_jmxfetch_App",
5755
packageName + ".Target_org_datadog_jmxfetch_Status",
5856
packageName + ".Target_org_datadog_jmxfetch_reporter_JsonReporter",
@@ -63,7 +61,6 @@ public static class FindTargetClassesAdvice {
6361
@Advice.OnMethodExit(suppress = Throwable.class)
6462
public static void onExit(@Advice.Return(readOnly = false) List<Class<?>> result) {
6563
result.add(Target_com_datadog_profiling_agent_ProcessContext.class);
66-
result.add(Target_datadog_jctools_util_UnsafeRefArrayAccess.class);
6764
result.add(Target_org_datadog_jmxfetch_App.class);
6865
result.add(Target_org_datadog_jmxfetch_Status.class);
6966
result.add(Target_org_datadog_jmxfetch_reporter_JsonReporter.class);

dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/Target_datadog_jctools_util_UnsafeRefArrayAccess.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

dd-trace-core/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ dependencies {
7474

7575
implementation libs.slf4j
7676
implementation libs.moshi
77-
implementation libs.jctools
7877

7978
implementation group: 'com.datadoghq', name: 'sketches-java', version: '0.8.3'
8079

dd-trace-core/src/main/java/datadog/trace/common/metrics/Aggregator.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
import datadog.trace.common.metrics.SignalItem.StopSignal;
66
import datadog.trace.core.util.LRUCache;
7+
import datadog.trace.util.queue.MpscArrayQueue;
78
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
89
import java.util.Iterator;
910
import java.util.Map;
1011
import java.util.Queue;
1112
import java.util.Set;
1213
import java.util.concurrent.ConcurrentMap;
1314
import java.util.concurrent.TimeUnit;
14-
import org.jctools.queues.MessagePassingQueue;
15-
import org.jctools.queues.MpscCompoundQueue;
15+
import java.util.function.Consumer;
1616
import org.slf4j.Logger;
1717
import org.slf4j.LoggerFactory;
1818

@@ -23,7 +23,7 @@ final class Aggregator implements Runnable {
2323
private static final Logger log = LoggerFactory.getLogger(Aggregator.class);
2424

2525
private final Queue<Batch> batchPool;
26-
private final MpscCompoundQueue<InboxItem> inbox;
26+
private final MpscArrayQueue<InboxItem> inbox;
2727
private final LRUCache<MetricKey, AggregateMetric> aggregates;
2828
private final ConcurrentMap<MetricKey, Batch> pending;
2929
private final Set<MetricKey> commonKeys;
@@ -43,7 +43,7 @@ final class Aggregator implements Runnable {
4343
Aggregator(
4444
MetricWriter writer,
4545
Queue<Batch> batchPool,
46-
MpscCompoundQueue<InboxItem> inbox,
46+
MpscArrayQueue<InboxItem> inbox,
4747
ConcurrentMap<MetricKey, Batch> pending,
4848
final Set<MetricKey> commonKeys,
4949
int maxAggregates,
@@ -64,7 +64,7 @@ final class Aggregator implements Runnable {
6464
Aggregator(
6565
MetricWriter writer,
6666
Queue<Batch> batchPool,
67-
MpscCompoundQueue<InboxItem> inbox,
67+
MpscArrayQueue<InboxItem> inbox,
6868
ConcurrentMap<MetricKey, Batch> pending,
6969
final Set<MetricKey> commonKeys,
7070
int maxAggregates,
@@ -107,7 +107,7 @@ public void run() {
107107
log.debug("metrics aggregator exited");
108108
}
109109

110-
private final class Drainer implements MessagePassingQueue.Consumer<InboxItem> {
110+
private final class Drainer implements Consumer<InboxItem> {
111111

112112
boolean stopped = false;
113113

dd-trace-core/src/main/java/datadog/trace/common/metrics/ConflatingMetricsAggregator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import datadog.trace.core.DDTraceCoreInfo;
3434
import datadog.trace.core.monitor.HealthMetrics;
3535
import datadog.trace.util.AgentTaskScheduler;
36+
import datadog.trace.util.queue.MpscArrayQueue;
37+
import datadog.trace.util.queue.SpmcArrayQueue;
3638
import java.util.ArrayList;
3739
import java.util.Arrays;
3840
import java.util.Collections;
@@ -47,8 +49,6 @@
4749
import java.util.concurrent.TimeUnit;
4850
import java.util.function.Function;
4951
import javax.annotation.Nonnull;
50-
import org.jctools.queues.MpscCompoundQueue;
51-
import org.jctools.queues.SpmcArrayQueue;
5252
import org.slf4j.Logger;
5353
import org.slf4j.LoggerFactory;
5454

@@ -94,7 +94,7 @@ public final class ConflatingMetricsAggregator implements MetricsAggregator, Eve
9494
private final ConcurrentHashMap<MetricKey, Batch> pending;
9595
private final ConcurrentHashMap<MetricKey, MetricKey> keys;
9696
private final Thread thread;
97-
private final MpscCompoundQueue<InboxItem> inbox;
97+
private final MpscArrayQueue<InboxItem> inbox;
9898
private final Sink sink;
9999
private final Aggregator aggregator;
100100
private final long reportingInterval;
@@ -177,7 +177,7 @@ public ConflatingMetricsAggregator(
177177
long reportingInterval,
178178
TimeUnit timeUnit) {
179179
this.ignoredResources = ignoredResources;
180-
this.inbox = new MpscCompoundQueue<>(queueSize);
180+
this.inbox = new MpscArrayQueue<>(queueSize);
181181
this.batchPool = new SpmcArrayQueue<>(maxAggregates);
182182
this.pending = new ConcurrentHashMap<>(maxAggregates * 4 / 3);
183183
this.keys = new ConcurrentHashMap<>();

0 commit comments

Comments
 (0)