Skip to content

Commit 4502e2b

Browse files
committed
Removes jctools usage for lock-free queues.
1 parent 81ec538 commit 4502e2b

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
@@ -24,7 +24,6 @@ minimumInstructionCoverage = 0.0
2424

2525
dependencies {
2626
api libs.slf4j
27-
implementation libs.jctools
2827

2928
implementation project(':communication')
3029
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
@@ -15,7 +15,6 @@ apply plugin: 'idea'
1515
dependencies {
1616
api project(':dd-java-agent:agent-profiling:profiling-controller')
1717

18-
implementation libs.jctools
1918
implementation libs.slf4j
2019

2120
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,14 +4,14 @@
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 java.util.Iterator;
89
import java.util.Map;
910
import java.util.Queue;
1011
import java.util.Set;
1112
import java.util.concurrent.ConcurrentMap;
1213
import java.util.concurrent.TimeUnit;
13-
import org.jctools.queues.MessagePassingQueue;
14-
import org.jctools.queues.MpscCompoundQueue;
14+
import java.util.function.Consumer;
1515
import org.slf4j.Logger;
1616
import org.slf4j.LoggerFactory;
1717

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

2424
private final Queue<Batch> batchPool;
25-
private final MpscCompoundQueue<InboxItem> inbox;
25+
private final MpscArrayQueue<InboxItem> inbox;
2626
private final LRUCache<MetricKey, AggregateMetric> aggregates;
2727
private final ConcurrentMap<MetricKey, Batch> pending;
2828
private final Set<MetricKey> commonKeys;
@@ -39,7 +39,7 @@ final class Aggregator implements Runnable {
3939
Aggregator(
4040
MetricWriter writer,
4141
Queue<Batch> batchPool,
42-
MpscCompoundQueue<InboxItem> inbox,
42+
MpscArrayQueue<InboxItem> inbox,
4343
ConcurrentMap<MetricKey, Batch> pending,
4444
final Set<MetricKey> commonKeys,
4545
int maxAggregates,
@@ -60,7 +60,7 @@ final class Aggregator implements Runnable {
6060
Aggregator(
6161
MetricWriter writer,
6262
Queue<Batch> batchPool,
63-
MpscCompoundQueue<InboxItem> inbox,
63+
MpscArrayQueue<InboxItem> inbox,
6464
ConcurrentMap<MetricKey, Batch> pending,
6565
final Set<MetricKey> commonKeys,
6666
int maxAggregates,
@@ -103,7 +103,7 @@ public void run() {
103103
log.debug("metrics aggregator exited");
104104
}
105105

106-
private final class Drainer implements MessagePassingQueue.Consumer<InboxItem> {
106+
private final class Drainer implements Consumer<InboxItem> {
107107

108108
boolean stopped = false;
109109

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;
@@ -46,8 +48,6 @@
4648
import java.util.concurrent.Future;
4749
import java.util.concurrent.TimeUnit;
4850
import java.util.function.Function;
49-
import org.jctools.queues.MpscCompoundQueue;
50-
import org.jctools.queues.SpmcArrayQueue;
5151
import org.slf4j.Logger;
5252
import org.slf4j.LoggerFactory;
5353

@@ -93,7 +93,7 @@ public final class ConflatingMetricsAggregator implements MetricsAggregator, Eve
9393
private final ConcurrentHashMap<MetricKey, Batch> pending;
9494
private final ConcurrentHashMap<MetricKey, MetricKey> keys;
9595
private final Thread thread;
96-
private final MpscCompoundQueue<InboxItem> inbox;
96+
private final MpscArrayQueue<InboxItem> inbox;
9797
private final Sink sink;
9898
private final Aggregator aggregator;
9999
private final long reportingInterval;
@@ -176,7 +176,7 @@ public ConflatingMetricsAggregator(
176176
long reportingInterval,
177177
TimeUnit timeUnit) {
178178
this.ignoredResources = ignoredResources;
179-
this.inbox = new MpscCompoundQueue<>(queueSize);
179+
this.inbox = new MpscArrayQueue<>(queueSize);
180180
this.batchPool = new SpmcArrayQueue<>(maxAggregates);
181181
this.pending = new ConcurrentHashMap<>(maxAggregates * 4 / 3);
182182
this.keys = new ConcurrentHashMap<>();

0 commit comments

Comments
 (0)