From e7e88a9af81dd07d6ba5a6376391781fcaa9389c Mon Sep 17 00:00:00 2001 From: Carl Mastrangelo Date: Wed, 7 Nov 2018 13:12:21 -0800 Subject: [PATCH] core: narrow SharedResourceHolder types, and make the scheduler unconfigurable --- .../main/java/io/grpc/internal/DnsNameResolver.java | 8 ++++---- core/src/main/java/io/grpc/internal/GrpcUtil.java | 12 ++++++------ .../java/io/grpc/internal/DnsNameResolverTest.java | 10 +++++----- .../java/io/grpc/okhttp/OkHttpChannelBuilder.java | 12 ++++++------ 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/core/src/main/java/io/grpc/internal/DnsNameResolver.java b/core/src/main/java/io/grpc/internal/DnsNameResolver.java index f7a7cc33ed..7950a20896 100644 --- a/core/src/main/java/io/grpc/internal/DnsNameResolver.java +++ b/core/src/main/java/io/grpc/internal/DnsNameResolver.java @@ -44,7 +44,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Random; import java.util.Set; -import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Level; @@ -135,11 +135,11 @@ final class DnsNameResolver extends NameResolver { private final String authority; private final String host; private final int port; - private final Resource executorResource; + private final Resource executorResource; @GuardedBy("this") private boolean shutdown; @GuardedBy("this") - private ExecutorService executor; + private Executor executor; @GuardedBy("this") private boolean resolving; @GuardedBy("this") @@ -148,7 +148,7 @@ final class DnsNameResolver extends NameResolver { private final Runnable resolveRunnable; DnsNameResolver(@Nullable String nsAuthority, String name, Attributes params, - Resource executorResource, ProxyDetector proxyDetector, + Resource executorResource, ProxyDetector proxyDetector, Stopwatch stopwatch, boolean isAndroid) { // TODO: if a DNS server is provided as nsAuthority, use it. // https://www.captechconsulting.com/blogs/accessing-the-dusty-corners-of-dns-with-java diff --git a/core/src/main/java/io/grpc/internal/GrpcUtil.java b/core/src/main/java/io/grpc/internal/GrpcUtil.java index 6cf13c83c3..fc3d1ca067 100644 --- a/core/src/main/java/io/grpc/internal/GrpcUtil.java +++ b/core/src/main/java/io/grpc/internal/GrpcUtil.java @@ -501,17 +501,17 @@ public final class GrpcUtil { /** * Shared executor for channels. */ - public static final Resource SHARED_CHANNEL_EXECUTOR = - new Resource() { + public static final Resource SHARED_CHANNEL_EXECUTOR = + new Resource() { private static final String NAME = "grpc-default-executor"; @Override - public ExecutorService create() { + public Executor create() { return Executors.newCachedThreadPool(getThreadFactory(NAME + "-%d", true)); } @Override - public void close(ExecutorService instance) { - instance.shutdown(); + public void close(Executor instance) { + ((ExecutorService) instance).shutdown(); } @Override @@ -549,7 +549,7 @@ public final class GrpcUtil { throw new RuntimeException(e); } - return service; + return Executors.unconfigurableScheduledExecutorService(service); } @Override diff --git a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java index e75579e107..e85e5c8625 100644 --- a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java @@ -58,7 +58,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Random; -import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; import org.junit.After; @@ -96,15 +96,15 @@ public class DnsNameResolverTest { private final FakeClock fakeClock = new FakeClock(); private final FakeClock fakeExecutor = new FakeClock(); - private final Resource fakeExecutorResource = - new Resource() { + private final Resource fakeExecutorResource = + new Resource() { @Override - public ExecutorService create() { + public Executor create() { return fakeExecutor.getScheduledExecutorService(); } @Override - public void close(ExecutorService instance) { + public void close(Executor instance) { } }; diff --git a/okhttp/src/main/java/io/grpc/okhttp/OkHttpChannelBuilder.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpChannelBuilder.java index 9ab52010f6..74bdda59d8 100644 --- a/okhttp/src/main/java/io/grpc/okhttp/OkHttpChannelBuilder.java +++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpChannelBuilder.java @@ -124,16 +124,16 @@ public class OkHttpChannelBuilder extends .build(); private static final long AS_LARGE_AS_INFINITE = TimeUnit.DAYS.toNanos(1000L); - private static final Resource SHARED_EXECUTOR = - new Resource() { + private static final Resource SHARED_EXECUTOR = + new Resource() { @Override - public ExecutorService create() { + public Executor create() { return Executors.newCachedThreadPool(GrpcUtil.getThreadFactory("grpc-okhttp-%d", true)); } @Override - public void close(ExecutorService executor) { - executor.shutdown(); + public void close(Executor executor) { + ((ExecutorService) executor).shutdown(); } }; @@ -606,7 +606,7 @@ public class OkHttpChannelBuilder extends } if (usingSharedExecutor) { - SharedResourceHolder.release(SHARED_EXECUTOR, (ExecutorService) executor); + SharedResourceHolder.release(SHARED_EXECUTOR, executor); } } }