Skip to content

Commit 575eca4

Browse files
olavloitesduskis
authored andcommitted
default executor used non-daemon threads (#5194)
The default executor for GrpcTransportOptions created non-daemon threads possibly keeping applications alive after the main method has finished. This is the cause of #2315.
1 parent db3241b commit 575eca4

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

google-cloud-clients/google-cloud-core-grpc/src/main/java/com/google/cloud/grpc/GrpcTransportOptions.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import com.google.cloud.NoCredentials;
3232
import com.google.cloud.ServiceOptions;
3333
import com.google.cloud.TransportOptions;
34+
import com.google.common.util.concurrent.ThreadFactoryBuilder;
3435
import io.grpc.internal.SharedResourceHolder;
3536
import io.grpc.internal.SharedResourceHolder.Resource;
3637
import java.io.IOException;
@@ -54,7 +55,13 @@ public class GrpcTransportOptions implements TransportOptions {
5455
new Resource<ScheduledExecutorService>() {
5556
@Override
5657
public ScheduledExecutorService create() {
57-
ScheduledThreadPoolExecutor service = new ScheduledThreadPoolExecutor(8);
58+
ScheduledThreadPoolExecutor service =
59+
new ScheduledThreadPoolExecutor(
60+
8,
61+
new ThreadFactoryBuilder()
62+
.setDaemon(true)
63+
.setNameFormat("grpc-transport-%d")
64+
.build());
5865
service.setKeepAliveTime(5, TimeUnit.SECONDS);
5966
service.allowCoreThreadTimeOut(true);
6067
service.setRemoveOnCancelPolicy(true);

0 commit comments

Comments
 (0)