diff --git a/sdk-extensions/tracing-incubator/build.gradle.kts b/sdk-extensions/tracing-incubator/build.gradle.kts index cef506031a..46dcea149a 100644 --- a/sdk-extensions/tracing-incubator/build.gradle.kts +++ b/sdk-extensions/tracing-incubator/build.gradle.kts @@ -15,9 +15,10 @@ dependencies { api(project(":api:all")) api(project(":sdk:all")) + compileOnly(project(":sdk:trace-shaded-deps")) + implementation(project(":api:metrics")) implementation(project(":semconv")) - implementation("org.jctools:jctools-core:3.3.0") annotationProcessor("com.google.auto.value:auto-value") testImplementation(project(":sdk:testing")) diff --git a/sdk-extensions/tracing-incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/ExecutorServiceSpanProcessor.java b/sdk-extensions/tracing-incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/ExecutorServiceSpanProcessor.java index ee54edbea5..e159d7a736 100644 --- a/sdk-extensions/tracing-incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/ExecutorServiceSpanProcessor.java +++ b/sdk-extensions/tracing-incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/ExecutorServiceSpanProcessor.java @@ -18,8 +18,10 @@ import io.opentelemetry.sdk.trace.ReadableSpan; import io.opentelemetry.sdk.trace.SpanProcessor; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; +import io.opentelemetry.sdk.trace.internal.JcTools; import java.util.ArrayList; import java.util.List; +import java.util.Queue; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -27,7 +29,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Logger; -import org.jctools.queues.MpscArrayQueue; /** * A Batch {@link SpanProcessor} that uses a user-provided {@link @@ -85,7 +86,7 @@ public final class ExecutorServiceSpanProcessor implements SpanProcessor { scheduleDelayNanos, maxExportBatchSize, exporterTimeoutNanos, - new MpscArrayQueue<>(maxQueueSize), + JcTools.newFixedSizeQueue(maxQueueSize), executorService, isShutdown, workerScheduleIntervalNanos); @@ -152,7 +153,7 @@ public final class ExecutorServiceSpanProcessor implements SpanProcessor { private final BoundLongCounter droppedSpans; private final AtomicReference flushRequested = new AtomicReference<>(); private final long scheduleDelayNanos; - private final MpscArrayQueue queue; + private final Queue queue; private final int maxExportBatchSize; private final SpanExporter spanExporter; private final ScheduledExecutorService executorService; @@ -162,7 +163,7 @@ public final class ExecutorServiceSpanProcessor implements SpanProcessor { long scheduleDelayNanos, int maxExportBatchSize, long exporterTimeoutNanos, - MpscArrayQueue queue, + Queue queue, ScheduledExecutorService executorService, AtomicBoolean isShutdown, long workerScheduleIntervalNanos) { diff --git a/sdk-extensions/tracing-incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/WorkerExporter.java b/sdk-extensions/tracing-incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/WorkerExporter.java index 418f648c01..d832d6fc66 100644 --- a/sdk-extensions/tracing-incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/WorkerExporter.java +++ b/sdk-extensions/tracing-incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/trace/WorkerExporter.java @@ -10,9 +10,9 @@ import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.ReadableSpan; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; -import java.util.AbstractQueue; import java.util.ArrayList; import java.util.Collection; +import java.util.Queue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -99,7 +99,7 @@ class WorkerExporter { * @param batch a collection of {@link SpanData} to export * @param queue {@link ReadableSpan} queue to be drained and then exported */ - public void flush(Collection batch, AbstractQueue queue) { + public void flush(Collection batch, Queue queue) { int spansToFlush = queue.size(); while (spansToFlush > 0) { ReadableSpan span = queue.poll();