Skip to content

Commit 2c01b46

Browse files
committed
Always use safe queue
1 parent e42ec68 commit 2c01b46

File tree

1 file changed

+1
-45
lines changed
  • sdk/trace-shaded-deps/src/main/java/io/opentelemetry/sdk/trace/internal

1 file changed

+1
-45
lines changed

sdk/trace-shaded-deps/src/main/java/io/opentelemetry/sdk/trace/internal/JcTools.java

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,9 @@
55

66
package io.opentelemetry.sdk.trace.internal;
77

8-
import java.util.Objects;
9-
import java.util.Optional;
108
import java.util.Queue;
11-
import java.util.concurrent.atomic.AtomicBoolean;
129
import java.util.function.Consumer;
13-
import java.util.logging.Level;
14-
import java.util.logging.Logger;
1510
import org.jctools.queues.MessagePassingQueue;
16-
import org.jctools.queues.MpscArrayQueue;
1711
import org.jctools.queues.atomic.MpscAtomicArrayQueue;
1812

1913
/**
@@ -24,30 +18,11 @@
2418
*/
2519
public final class JcTools {
2620

27-
private static final AtomicBoolean queueCreationWarningLogged = new AtomicBoolean();
28-
private static final Logger logger = Logger.getLogger(JcTools.class.getName());
29-
private static final boolean PROACTIVELY_AVOID_UNSAFE = proactivelyAvoidUnsafe();
30-
3121
/**
3222
* Returns a new {@link Queue} appropriate for use with multiple producers and a single consumer.
3323
*/
3424
public static <T> Queue<T> newFixedSizeQueue(int capacity) {
35-
if (PROACTIVELY_AVOID_UNSAFE) {
36-
return new MpscAtomicArrayQueue<>(capacity);
37-
}
38-
try {
39-
return new MpscArrayQueue<>(capacity);
40-
} catch (java.lang.NoClassDefFoundError | java.lang.ExceptionInInitializerError e) {
41-
if (!queueCreationWarningLogged.getAndSet(true)) {
42-
logger.log(
43-
Level.WARNING,
44-
"Cannot create high-performance queue, reverting to ArrayBlockingQueue ({0})",
45-
Objects.toString(e, "unknown cause"));
46-
}
47-
// Happens when modules such as jdk.unsupported are disabled in a custom JRE distribution,
48-
// or a security manager preventing access to Unsafe is installed.
49-
return new MpscAtomicArrayQueue<>(capacity);
50-
}
25+
return new MpscAtomicArrayQueue<>(capacity);
5126
}
5227

5328
/**
@@ -69,24 +44,5 @@ public static <T> int drain(Queue<T> queue, int limit, Consumer<T> consumer) {
6944
return ((MessagePassingQueue<T>) queue).drain(consumer::accept, limit);
7045
}
7146

72-
private static boolean proactivelyAvoidUnsafe() {
73-
Optional<Double> javaVersion = getJavaVersion();
74-
// Avoid Unsafe on Java 23+ due to JEP-498 deprecation warnings:
75-
// "WARNING: A terminally deprecated method in sun.misc.Unsafe has been called"
76-
return javaVersion.map(version -> version >= 23).orElse(true);
77-
}
78-
79-
private static Optional<Double> getJavaVersion() {
80-
String specVersion = System.getProperty("java.specification.version");
81-
if (specVersion != null) {
82-
try {
83-
return Optional.of(Double.parseDouble(specVersion));
84-
} catch (NumberFormatException exception) {
85-
// ignore
86-
}
87-
}
88-
return Optional.empty();
89-
}
90-
9147
private JcTools() {}
9248
}

0 commit comments

Comments
 (0)