From 902990e33e8625b9191a1f1cdb9382427d7ec27b Mon Sep 17 00:00:00 2001 From: Chengyuan Zhang Date: Wed, 20 Nov 2019 16:32:01 -0800 Subject: [PATCH 1/4] Rename ScheduledExecutorServiceForBalancer to RestrictedScheduledExecutorService as it needs to be shared for name resolver as well. --- .../java/io/grpc/internal/ManagedChannelImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java b/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java index de3a472501c..48dd44f782d 100644 --- a/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java +++ b/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java @@ -137,7 +137,7 @@ final class ManagedChannelImpl extends ManagedChannel implements private final NameResolver.Args nameResolverArgs; private final AutoConfiguredLoadBalancerFactory loadBalancerFactory; private final ClientTransportFactory transportFactory; - private final ScheduledExecutorForBalancer scheduledExecutorForBalancer; + private final RestrictedScheduledExecutor scheduledExecutor; private final Executor executor; private final ObjectPool executorPool; private final ObjectPool balancerRpcExecutorPool; @@ -607,8 +607,8 @@ public void execute(Runnable command) { this.backoffPolicyProvider = backoffPolicyProvider; this.transportFactory = new CallCredentialsApplyingTransportFactory(clientTransportFactory, this.executor); - this.scheduledExecutorForBalancer = - new ScheduledExecutorForBalancer(transportFactory.getScheduledExecutorService()); + this.scheduledExecutor = + new RestrictedScheduledExecutor(transportFactory.getScheduledExecutorService()); serviceConfigInterceptor = new ServiceConfigInterceptor( retryEnabled, builder.maxRetryAttempts, builder.maxHedgedAttempts); @@ -1269,7 +1269,7 @@ public SynchronizationContext getSynchronizationContext() { @Override public ScheduledExecutorService getScheduledExecutorService() { - return scheduledExecutorForBalancer; + return scheduledExecutor; } @Override @@ -1736,10 +1736,10 @@ synchronized void release() { } } - private static final class ScheduledExecutorForBalancer implements ScheduledExecutorService { + private static final class RestrictedScheduledExecutor implements ScheduledExecutorService { final ScheduledExecutorService delegate; - private ScheduledExecutorForBalancer(ScheduledExecutorService delegate) { + private RestrictedScheduledExecutor(ScheduledExecutorService delegate) { this.delegate = checkNotNull(delegate, "delegate"); } From 61c87dc86ff5e0cfba58d90135658327a7cb472c Mon Sep 17 00:00:00 2001 From: Chengyuan Zhang Date: Wed, 20 Nov 2019 17:02:58 -0800 Subject: [PATCH 2/4] Add API to access ScheduledExecutorService created in ManagedChannelImpl for NameResolver.Args. --- api/src/main/java/io/grpc/NameResolver.java | 36 ++++++++++++++++++- .../io/grpc/NameResolverRegistryTest.java | 2 ++ .../test/java/io/grpc/NameResolverTest.java | 6 ++++ .../io/grpc/internal/ManagedChannelImpl.java | 14 ++++---- .../internal/DnsNameResolverProviderTest.java | 2 ++ .../io/grpc/internal/DnsNameResolverTest.java | 3 ++ ...ManagedChannelImplGetNameResolverTest.java | 2 ++ .../OverrideAuthorityNameResolverTest.java | 2 ++ .../grpc/xds/XdsNameResolverProviderTest.java | 2 ++ .../java/io/grpc/xds/XdsNameResolverTest.java | 2 ++ 10 files changed, 63 insertions(+), 8 deletions(-) diff --git a/api/src/main/java/io/grpc/NameResolver.java b/api/src/main/java/io/grpc/NameResolver.java index fd7302658c5..65122b5c1b6 100644 --- a/api/src/main/java/io/grpc/NameResolver.java +++ b/api/src/main/java/io/grpc/NameResolver.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.Executor; +import java.util.concurrent.ScheduledExecutorService; import javax.annotation.Nullable; import javax.annotation.concurrent.ThreadSafe; @@ -412,6 +413,7 @@ public static final class Args { private final ProxyDetector proxyDetector; private final SynchronizationContext syncContext; private final ServiceConfigParser serviceConfigParser; + @Nullable private final ScheduledExecutorService scheduledExecutorService; @Nullable private final ChannelLogger channelLogger; @Nullable private final Executor executor; @@ -420,12 +422,14 @@ private Args( ProxyDetector proxyDetector, SynchronizationContext syncContext, ServiceConfigParser serviceConfigParser, + @Nullable ScheduledExecutorService scheduledExecutorService, @Nullable ChannelLogger channelLogger, @Nullable Executor executor) { this.defaultPort = checkNotNull(defaultPort, "defaultPort not set"); this.proxyDetector = checkNotNull(proxyDetector, "proxyDetector not set"); this.syncContext = checkNotNull(syncContext, "syncContext not set"); this.serviceConfigParser = checkNotNull(serviceConfigParser, "serviceConfigParser not set"); + this.scheduledExecutorService = scheduledExecutorService; this.channelLogger = channelLogger; this.executor = executor; } @@ -460,6 +464,24 @@ public SynchronizationContext getSynchronizationContext() { return syncContext; } + /** + * Returns a {@link ScheduledExecutorService} for scheduling delayed tasks. + * + *

This service is a shared resource and is only meant for quick tasks. DO NOT block or run + * time-consuming tasks. + * + *

The returned service doesn't support {@link ScheduledExecutorService#shutdown shutdown()} + * and {@link ScheduledExecutorService#shutdownNow shutdownNow()}. They will throw if called. + * + * @since 1.26.0 + */ + public ScheduledExecutorService getScheduledExecutorService() { + if (scheduledExecutorService == null) { + throw new IllegalStateException("ScheduledExecutorService not set in Builder"); + } + return scheduledExecutorService; + } + /** * Returns the {@link ServiceConfigParser}. * @@ -501,6 +523,7 @@ public String toString() { .add("proxyDetector", proxyDetector) .add("syncContext", syncContext) .add("serviceConfigParser", serviceConfigParser) + .add("scheduledExecutorService", scheduledExecutorService) .add("channelLogger", channelLogger) .add("executor", executor) .toString(); @@ -517,6 +540,7 @@ public Builder toBuilder() { builder.setProxyDetector(proxyDetector); builder.setSynchronizationContext(syncContext); builder.setServiceConfigParser(serviceConfigParser); + builder.setScheduledExecutorService(scheduledExecutorService); builder.setChannelLogger(channelLogger); builder.setOffloadExecutor(executor); return builder; @@ -541,6 +565,7 @@ public static final class Builder { private ProxyDetector proxyDetector; private SynchronizationContext syncContext; private ServiceConfigParser serviceConfigParser; + private ScheduledExecutorService scheduledExecutorService; private ChannelLogger channelLogger; private Executor executor; @@ -577,6 +602,15 @@ public Builder setSynchronizationContext(SynchronizationContext syncContext) { return this; } + /** + * See {@link Args#getScheduledExecutorService}. + */ + public Builder setScheduledExecutorService( + ScheduledExecutorService scheduledExecutorService) { + this.scheduledExecutorService = checkNotNull(scheduledExecutorService); + return this; + } + /** * See {@link Args#getServiceConfigParser}. This is a required field. * @@ -618,7 +652,7 @@ public Args build() { return new Args( defaultPort, proxyDetector, syncContext, serviceConfigParser, - channelLogger, executor); + scheduledExecutorService, channelLogger, executor); } } } diff --git a/api/src/test/java/io/grpc/NameResolverRegistryTest.java b/api/src/test/java/io/grpc/NameResolverRegistryTest.java index f35f2f00b93..5fa6f16eb6d 100644 --- a/api/src/test/java/io/grpc/NameResolverRegistryTest.java +++ b/api/src/test/java/io/grpc/NameResolverRegistryTest.java @@ -26,6 +26,7 @@ import java.lang.Thread.UncaughtExceptionHandler; import java.net.URI; import java.util.List; +import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -39,6 +40,7 @@ public class NameResolverRegistryTest { .setProxyDetector(mock(ProxyDetector.class)) .setSynchronizationContext(new SynchronizationContext(mock(UncaughtExceptionHandler.class))) .setServiceConfigParser(mock(ServiceConfigParser.class)) + .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/api/src/test/java/io/grpc/NameResolverTest.java b/api/src/test/java/io/grpc/NameResolverTest.java index 828047443a4..0924002fd28 100644 --- a/api/src/test/java/io/grpc/NameResolverTest.java +++ b/api/src/test/java/io/grpc/NameResolverTest.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.atomic.AtomicReference; import org.junit.Before; import org.junit.Test; @@ -45,6 +46,8 @@ public class NameResolverTest { private final SynchronizationContext syncContext = new SynchronizationContext(mock(UncaughtExceptionHandler.class)); private final ServiceConfigParser parser = mock(ServiceConfigParser.class); + private final ScheduledExecutorService scheduledExecutorService = + mock(ScheduledExecutorService.class); private final ChannelLogger channelLogger = mock(ChannelLogger.class); private final Executor executor = Executors.newSingleThreadExecutor(); private URI uri; @@ -62,6 +65,7 @@ public void args() { assertThat(args.getProxyDetector()).isSameInstanceAs(proxyDetector); assertThat(args.getSynchronizationContext()).isSameInstanceAs(syncContext); assertThat(args.getServiceConfigParser()).isSameInstanceAs(parser); + assertThat(args.getScheduledExecutorService()).isSameInstanceAs(scheduledExecutorService); assertThat(args.getChannelLogger()).isSameInstanceAs(channelLogger); assertThat(args.getOffloadExecutor()).isSameInstanceAs(executor); @@ -70,6 +74,7 @@ public void args() { assertThat(args2.getProxyDetector()).isSameInstanceAs(proxyDetector); assertThat(args2.getSynchronizationContext()).isSameInstanceAs(syncContext); assertThat(args2.getServiceConfigParser()).isSameInstanceAs(parser); + assertThat(args2.getScheduledExecutorService()).isSameInstanceAs(scheduledExecutorService); assertThat(args2.getChannelLogger()).isSameInstanceAs(channelLogger); assertThat(args2.getOffloadExecutor()).isSameInstanceAs(executor); @@ -254,6 +259,7 @@ private NameResolver.Args createArgs() { .setProxyDetector(proxyDetector) .setSynchronizationContext(syncContext) .setServiceConfigParser(parser) + .setScheduledExecutorService(scheduledExecutorService) .setChannelLogger(channelLogger) .setOffloadExecutor(executor) .build(); diff --git a/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java b/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java index 48dd44f782d..b21faa322d3 100644 --- a/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java +++ b/core/src/main/java/io/grpc/internal/ManagedChannelImpl.java @@ -562,6 +562,12 @@ ClientStream newSubstream(ClientStreamTracer.Factory tracerFactory, Metadata new this.target = checkNotNull(builder.target, "target"); this.logId = InternalLogId.allocate("Channel", target); this.timeProvider = checkNotNull(timeProvider, "timeProvider"); + this.executorPool = checkNotNull(builder.executorPool, "executorPool"); + this.executor = checkNotNull(executorPool.getObject(), "executor"); + this.transportFactory = + new CallCredentialsApplyingTransportFactory(clientTransportFactory, this.executor); + this.scheduledExecutor = + new RestrictedScheduledExecutor(transportFactory.getScheduledExecutorService()); maxTraceEvents = builder.maxTraceEvents; channelTracer = new ChannelTracer( logId, builder.maxTraceEvents, timeProvider.currentTimeNanos(), @@ -581,6 +587,7 @@ ClientStream newSubstream(ClientStreamTracer.Factory tracerFactory, Metadata new .setDefaultPort(builder.getDefaultPort()) .setProxyDetector(proxyDetector) .setSynchronizationContext(syncContext) + .setScheduledExecutorService(scheduledExecutor) .setServiceConfigParser( new ScParser( retryEnabled, @@ -598,18 +605,11 @@ public void execute(Runnable command) { }) .build(); this.nameResolver = getNameResolver(target, nameResolverFactory, nameResolverArgs); - this.executorPool = checkNotNull(builder.executorPool, "executorPool"); this.balancerRpcExecutorPool = checkNotNull(balancerRpcExecutorPool, "balancerRpcExecutorPool"); this.balancerRpcExecutorHolder = new ExecutorHolder(balancerRpcExecutorPool); - this.executor = checkNotNull(executorPool.getObject(), "executor"); this.delayedTransport = new DelayedClientTransport(this.executor, this.syncContext); this.delayedTransport.start(delayedTransportListener); this.backoffPolicyProvider = backoffPolicyProvider; - this.transportFactory = - new CallCredentialsApplyingTransportFactory(clientTransportFactory, this.executor); - this.scheduledExecutor = - new RestrictedScheduledExecutor(transportFactory.getScheduledExecutorService()); - serviceConfigInterceptor = new ServiceConfigInterceptor( retryEnabled, builder.maxRetryAttempts, builder.maxHedgedAttempts); this.defaultServiceConfig = builder.defaultServiceConfig; diff --git a/core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java b/core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java index fa52a7d8511..4016b2b46f5 100644 --- a/core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java +++ b/core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java @@ -29,6 +29,7 @@ import io.grpc.NameResolver.ServiceConfigParser; import io.grpc.SynchronizationContext; import java.net.URI; +import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -48,6 +49,7 @@ public void uncaughtException(Thread t, Throwable e) { .setProxyDetector(GrpcUtil.DEFAULT_PROXY_DETECTOR) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) + .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java index 192d03d3341..01c60670c1c 100644 --- a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java @@ -70,6 +70,7 @@ import java.util.Map; import java.util.Random; import java.util.concurrent.Executor; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -116,6 +117,7 @@ public void uncaughtException(Thread t, Throwable e) { .setProxyDetector(GrpcUtil.DEFAULT_PROXY_DETECTOR) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) + .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); @@ -177,6 +179,7 @@ private DnsNameResolver newResolver( .setProxyDetector(proxyDetector) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) + .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); return newResolver(name, stopwatch, isAndroid, args); diff --git a/core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java b/core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java index c1d84eb76bf..aad20108ef8 100644 --- a/core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java @@ -29,6 +29,7 @@ import io.grpc.SynchronizationContext; import java.lang.Thread.UncaughtExceptionHandler; import java.net.URI; +import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -41,6 +42,7 @@ public class ManagedChannelImplGetNameResolverTest { .setProxyDetector(mock(ProxyDetector.class)) .setSynchronizationContext(new SynchronizationContext(mock(UncaughtExceptionHandler.class))) .setServiceConfigParser(mock(ServiceConfigParser.class)) + .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/core/src/test/java/io/grpc/internal/OverrideAuthorityNameResolverTest.java b/core/src/test/java/io/grpc/internal/OverrideAuthorityNameResolverTest.java index 8d23ce3f884..b6ada1c197e 100644 --- a/core/src/test/java/io/grpc/internal/OverrideAuthorityNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/OverrideAuthorityNameResolverTest.java @@ -30,6 +30,7 @@ import io.grpc.SynchronizationContext; import java.lang.Thread.UncaughtExceptionHandler; import java.net.URI; +import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -42,6 +43,7 @@ public class OverrideAuthorityNameResolverTest { .setProxyDetector(mock(ProxyDetector.class)) .setSynchronizationContext(new SynchronizationContext(mock(UncaughtExceptionHandler.class))) .setServiceConfigParser(mock(ServiceConfigParser.class)) + .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java b/xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java index 275cf720739..36c0dc6de9f 100644 --- a/xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java +++ b/xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java @@ -28,6 +28,7 @@ import io.grpc.SynchronizationContext; import io.grpc.internal.GrpcUtil; import java.net.URI; +import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -47,6 +48,7 @@ public void uncaughtException(Thread t, Throwable e) { .setProxyDetector(GrpcUtil.NOOP_PROXY_DETECTOR) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) + .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java b/xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java index d3efc826a5f..9ba0baef374 100644 --- a/xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java +++ b/xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java @@ -39,6 +39,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.concurrent.ScheduledExecutorService; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -70,6 +71,7 @@ public void uncaughtException(Thread t, Throwable e) { .setProxyDetector(GrpcUtil.NOOP_PROXY_DETECTOR) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) + .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); From 4fed79b5050048ae699292fb8274a7bd2b3cfb27 Mon Sep 17 00:00:00 2001 From: Chengyuan Zhang Date: Wed, 20 Nov 2019 17:09:53 -0800 Subject: [PATCH 3/4] Add ExperimentalApi annotation. --- api/src/main/java/io/grpc/NameResolver.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/src/main/java/io/grpc/NameResolver.java b/api/src/main/java/io/grpc/NameResolver.java index 65122b5c1b6..2a66ef6770a 100644 --- a/api/src/main/java/io/grpc/NameResolver.java +++ b/api/src/main/java/io/grpc/NameResolver.java @@ -475,6 +475,7 @@ public SynchronizationContext getSynchronizationContext() { * * @since 1.26.0 */ + @ExperimentalApi("https://github.com/grpc/grpc-java/issues/6454") public ScheduledExecutorService getScheduledExecutorService() { if (scheduledExecutorService == null) { throw new IllegalStateException("ScheduledExecutorService not set in Builder"); @@ -605,6 +606,7 @@ public Builder setSynchronizationContext(SynchronizationContext syncContext) { /** * See {@link Args#getScheduledExecutorService}. */ + @ExperimentalApi("https://github.com/grpc/grpc-java/issues/6454") public Builder setScheduledExecutorService( ScheduledExecutorService scheduledExecutorService) { this.scheduledExecutorService = checkNotNull(scheduledExecutorService); From 26d8181d121655a3ad58686130a8fc8f055eaaa1 Mon Sep 17 00:00:00 2001 From: Chengyuan Zhang Date: Thu, 21 Nov 2019 14:47:06 -0800 Subject: [PATCH 4/4] Unset mocked ScheduledExecutorService in tests that do not use it. --- api/src/test/java/io/grpc/NameResolverRegistryTest.java | 2 -- .../java/io/grpc/internal/DnsNameResolverProviderTest.java | 2 -- core/src/test/java/io/grpc/internal/DnsNameResolverTest.java | 3 --- .../grpc/internal/ManagedChannelImplGetNameResolverTest.java | 2 -- .../io/grpc/internal/OverrideAuthorityNameResolverTest.java | 2 -- xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java | 2 -- xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java | 2 -- 7 files changed, 15 deletions(-) diff --git a/api/src/test/java/io/grpc/NameResolverRegistryTest.java b/api/src/test/java/io/grpc/NameResolverRegistryTest.java index 5fa6f16eb6d..f35f2f00b93 100644 --- a/api/src/test/java/io/grpc/NameResolverRegistryTest.java +++ b/api/src/test/java/io/grpc/NameResolverRegistryTest.java @@ -26,7 +26,6 @@ import java.lang.Thread.UncaughtExceptionHandler; import java.net.URI; import java.util.List; -import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -40,7 +39,6 @@ public class NameResolverRegistryTest { .setProxyDetector(mock(ProxyDetector.class)) .setSynchronizationContext(new SynchronizationContext(mock(UncaughtExceptionHandler.class))) .setServiceConfigParser(mock(ServiceConfigParser.class)) - .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java b/core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java index 4016b2b46f5..fa52a7d8511 100644 --- a/core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java +++ b/core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java @@ -29,7 +29,6 @@ import io.grpc.NameResolver.ServiceConfigParser; import io.grpc.SynchronizationContext; import java.net.URI; -import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -49,7 +48,6 @@ public void uncaughtException(Thread t, Throwable e) { .setProxyDetector(GrpcUtil.DEFAULT_PROXY_DETECTOR) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) - .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java index 01c60670c1c..192d03d3341 100644 --- a/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/DnsNameResolverTest.java @@ -70,7 +70,6 @@ import java.util.Map; import java.util.Random; import java.util.concurrent.Executor; -import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -117,7 +116,6 @@ public void uncaughtException(Thread t, Throwable e) { .setProxyDetector(GrpcUtil.DEFAULT_PROXY_DETECTOR) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) - .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); @@ -179,7 +177,6 @@ private DnsNameResolver newResolver( .setProxyDetector(proxyDetector) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) - .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); return newResolver(name, stopwatch, isAndroid, args); diff --git a/core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java b/core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java index aad20108ef8..c1d84eb76bf 100644 --- a/core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java @@ -29,7 +29,6 @@ import io.grpc.SynchronizationContext; import java.lang.Thread.UncaughtExceptionHandler; import java.net.URI; -import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -42,7 +41,6 @@ public class ManagedChannelImplGetNameResolverTest { .setProxyDetector(mock(ProxyDetector.class)) .setSynchronizationContext(new SynchronizationContext(mock(UncaughtExceptionHandler.class))) .setServiceConfigParser(mock(ServiceConfigParser.class)) - .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/core/src/test/java/io/grpc/internal/OverrideAuthorityNameResolverTest.java b/core/src/test/java/io/grpc/internal/OverrideAuthorityNameResolverTest.java index b6ada1c197e..8d23ce3f884 100644 --- a/core/src/test/java/io/grpc/internal/OverrideAuthorityNameResolverTest.java +++ b/core/src/test/java/io/grpc/internal/OverrideAuthorityNameResolverTest.java @@ -30,7 +30,6 @@ import io.grpc.SynchronizationContext; import java.lang.Thread.UncaughtExceptionHandler; import java.net.URI; -import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -43,7 +42,6 @@ public class OverrideAuthorityNameResolverTest { .setProxyDetector(mock(ProxyDetector.class)) .setSynchronizationContext(new SynchronizationContext(mock(UncaughtExceptionHandler.class))) .setServiceConfigParser(mock(ServiceConfigParser.class)) - .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java b/xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java index 36c0dc6de9f..275cf720739 100644 --- a/xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java +++ b/xds/src/test/java/io/grpc/xds/XdsNameResolverProviderTest.java @@ -28,7 +28,6 @@ import io.grpc.SynchronizationContext; import io.grpc.internal.GrpcUtil; import java.net.URI; -import java.util.concurrent.ScheduledExecutorService; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -48,7 +47,6 @@ public void uncaughtException(Thread t, Throwable e) { .setProxyDetector(GrpcUtil.NOOP_PROXY_DETECTOR) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) - .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build(); diff --git a/xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java b/xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java index 9ba0baef374..d3efc826a5f 100644 --- a/xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java +++ b/xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java @@ -39,7 +39,6 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.concurrent.ScheduledExecutorService; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -71,7 +70,6 @@ public void uncaughtException(Thread t, Throwable e) { .setProxyDetector(GrpcUtil.NOOP_PROXY_DETECTOR) .setSynchronizationContext(syncContext) .setServiceConfigParser(mock(ServiceConfigParser.class)) - .setScheduledExecutorService(mock(ScheduledExecutorService.class)) .setChannelLogger(mock(ChannelLogger.class)) .build();