From 521c55e9bd81c1f6dc17f3cc33448702ee29f64c Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Wed, 23 Aug 2017 15:26:15 -0700 Subject: [PATCH] Avoid request threads on AppEngine Java 8 While the code had correctly determined full threads were available, the call to MoreExecutors returned a request thread factory, which has limitations. Note that Async stub users may not be able to call GAE APIs in callbacks. This is because the threads aren't request threads. They can override the individual call's executor with com.google.appengine.api.ThreadManager.currentRequestThreadFactory() in an interceptor via callOptions.withExecutor(). Fixes #3296 --- core/src/main/java/io/grpc/internal/GrpcUtil.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/src/main/java/io/grpc/internal/GrpcUtil.java b/core/src/main/java/io/grpc/internal/GrpcUtil.java index 9116de80a3..a8d88998a9 100644 --- a/core/src/main/java/io/grpc/internal/GrpcUtil.java +++ b/core/src/main/java/io/grpc/internal/GrpcUtil.java @@ -482,12 +482,10 @@ public final class GrpcUtil { * @return a {@link ThreadFactory}. */ public static ThreadFactory getThreadFactory(String nameFormat, boolean daemon) { - ThreadFactory threadFactory = MoreExecutors.platformThreadFactory(); if (IS_RESTRICTED_APPENGINE) { - return threadFactory; + return MoreExecutors.platformThreadFactory(); } else { return new ThreadFactoryBuilder() - .setThreadFactory(threadFactory) .setDaemon(daemon) .setNameFormat(nameFormat) .build();