|
| 1 | +From f371066409daaf55739eb60e1ef0d9f42b21ac2a Mon Sep 17 00:00:00 2001 |
| 2 | +From: Trask Stalnaker <trask.stalnaker@gmail.com> |
| 3 | +Date: Sat, 20 Sep 2025 15:36:51 -0700 |
| 4 | +Subject: [PATCH] Remove Unsafe usage |
| 5 | + |
| 6 | +--- |
| 7 | + .../java/com/linecorp/armeria/common/ExceptionSampler.java | 5 ++--- |
| 8 | + .../linecorp/armeria/common/stream/DefaultStreamMessage.java | 4 ++-- |
| 9 | + core/src/main/java/com/linecorp/armeria/server/Server.java | 4 ++-- |
| 10 | + 3 files changed, 6 insertions(+), 7 deletions(-) |
| 11 | + |
| 12 | +diff --git a/core/src/main/java/com/linecorp/armeria/common/ExceptionSampler.java b/core/src/main/java/com/linecorp/armeria/common/ExceptionSampler.java |
| 13 | +index 87afd2074..b5c1c2470 100644 |
| 14 | +--- a/core/src/main/java/com/linecorp/armeria/common/ExceptionSampler.java |
| 15 | ++++ b/core/src/main/java/com/linecorp/armeria/common/ExceptionSampler.java |
| 16 | +@@ -18,10 +18,9 @@ package com.linecorp.armeria.common; |
| 17 | + import static java.util.Objects.requireNonNull; |
| 18 | + |
| 19 | + import java.util.Map; |
| 20 | ++import java.util.concurrent.ConcurrentHashMap; |
| 21 | + import java.util.function.Function; |
| 22 | + |
| 23 | +-import org.jctools.maps.NonBlockingHashMap; |
| 24 | +- |
| 25 | + import com.google.common.base.MoreObjects; |
| 26 | + |
| 27 | + import com.linecorp.armeria.common.util.Sampler; |
| 28 | +@@ -29,7 +28,7 @@ import com.linecorp.armeria.common.util.Sampler; |
| 29 | + final class ExceptionSampler implements Sampler<Class<? extends Throwable>> { |
| 30 | + |
| 31 | + private final Map<Class<? extends Throwable>, Sampler<Class<? extends Throwable>>> samplers = |
| 32 | +- new NonBlockingHashMap<>(); |
| 33 | ++ new ConcurrentHashMap<>(); |
| 34 | + private final Function<? super Class<? extends Throwable>, |
| 35 | + ? extends Sampler<Class<? extends Throwable>>> samplerFactory; |
| 36 | + private final String spec; |
| 37 | +diff --git a/core/src/main/java/com/linecorp/armeria/common/stream/DefaultStreamMessage.java b/core/src/main/java/com/linecorp/armeria/common/stream/DefaultStreamMessage.java |
| 38 | +index e9328f03e..12173e999 100644 |
| 39 | +--- a/core/src/main/java/com/linecorp/armeria/common/stream/DefaultStreamMessage.java |
| 40 | ++++ b/core/src/main/java/com/linecorp/armeria/common/stream/DefaultStreamMessage.java |
| 41 | +@@ -22,9 +22,9 @@ import static java.util.Objects.requireNonNull; |
| 42 | + |
| 43 | + import java.util.Queue; |
| 44 | + import java.util.concurrent.CompletableFuture; |
| 45 | ++import java.util.concurrent.ConcurrentLinkedQueue; |
| 46 | + import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; |
| 47 | + |
| 48 | +-import org.jctools.queues.MpscChunkedArrayQueue; |
| 49 | + import org.reactivestreams.Subscriber; |
| 50 | + import org.slf4j.Logger; |
| 51 | + import org.slf4j.LoggerFactory; |
| 52 | +@@ -109,7 +109,7 @@ public class DefaultStreamMessage<T> extends AbstractStreamWriter<T> { |
| 53 | + */ |
| 54 | + @Deprecated |
| 55 | + public DefaultStreamMessage() { |
| 56 | +- queue = new MpscChunkedArrayQueue<>(INITIAL_CAPACITY, 1 << 30); |
| 57 | ++ queue = new ConcurrentLinkedQueue<>(); |
| 58 | + } |
| 59 | + |
| 60 | + @Override |
| 61 | +diff --git a/core/src/main/java/com/linecorp/armeria/server/Server.java b/core/src/main/java/com/linecorp/armeria/server/Server.java |
| 62 | +index 6b8b0b557..0c3eed942 100644 |
| 63 | +--- a/core/src/main/java/com/linecorp/armeria/server/Server.java |
| 64 | ++++ b/core/src/main/java/com/linecorp/armeria/server/Server.java |
| 65 | +@@ -37,6 +37,7 @@ import java.util.Set; |
| 66 | + import java.util.concurrent.CompletableFuture; |
| 67 | + import java.util.concurrent.CompletionException; |
| 68 | + import java.util.concurrent.CompletionStage; |
| 69 | ++import java.util.concurrent.ConcurrentHashMap; |
| 70 | + import java.util.concurrent.ExecutionException; |
| 71 | + import java.util.concurrent.Executor; |
| 72 | + import java.util.concurrent.ExecutorService; |
| 73 | +@@ -51,7 +52,6 @@ import java.util.stream.Collectors; |
| 74 | + |
| 75 | + import javax.net.ssl.SSLSession; |
| 76 | + |
| 77 | +-import org.jctools.maps.NonBlockingHashSet; |
| 78 | + import org.slf4j.Logger; |
| 79 | + import org.slf4j.LoggerFactory; |
| 80 | + |
| 81 | +@@ -119,7 +119,7 @@ public final class Server implements ListenableAsyncCloseable { |
| 82 | + |
| 83 | + private final UpdatableServerConfig config; |
| 84 | + private final StartStopSupport<Void, Void, Void, ServerListener> startStop; |
| 85 | +- private final Set<ServerChannel> serverChannels = new NonBlockingHashSet<>(); |
| 86 | ++ private final Set<ServerChannel> serverChannels = ConcurrentHashMap.newKeySet(); |
| 87 | + private final ReentrantLock lock = new ReentrantShortLock(); |
| 88 | + @GuardedBy("lock") |
| 89 | + private final Map<InetSocketAddress, ServerPort> activePorts = new LinkedHashMap<>(); |
| 90 | +-- |
| 91 | +2.51.0.windows.1 |
| 92 | + |
0 commit comments