Skip to content

Commit d50098f

Browse files
authored
s2a: Remove channel.awaitTermination() from S2A ChannelResource
awaitTermination() was always timing out, because when the channel terminates it releases shared resources from a transport thread. Releasing the reference count was blocked on the same lock that the close() thread is holding. So it essentially deadlocked, except one thread would eventually give up. b/388769143
1 parent 7cb8b68 commit d50098f

File tree

1 file changed

+0
-13
lines changed

1 file changed

+0
-13
lines changed

s2a/src/main/java/io/grpc/s2a/internal/channel/S2AHandshakerServiceChannel.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@
2424
import io.grpc.ManagedChannel;
2525
import io.grpc.internal.SharedResourceHolder.Resource;
2626
import io.grpc.netty.NettyChannelBuilder;
27-
import java.time.Duration;
28-
import java.util.logging.Level;
29-
import java.util.logging.Logger;
3027
import javax.annotation.concurrent.ThreadSafe;
3128

3229
/**
@@ -50,9 +47,6 @@
5047
*/
5148
@ThreadSafe
5249
public final class S2AHandshakerServiceChannel {
53-
private static final Duration CHANNEL_SHUTDOWN_TIMEOUT = Duration.ofSeconds(10);
54-
private static final Logger logger =
55-
Logger.getLogger(S2AHandshakerServiceChannel.class.getName());
5650

5751
/**
5852
* Returns a {@link SharedResourceHolder.Resource} instance for managing channels to an S2A server
@@ -101,13 +95,6 @@ public void close(Channel instanceChannel) {
10195
checkNotNull(instanceChannel);
10296
ManagedChannel channel = (ManagedChannel) instanceChannel;
10397
channel.shutdownNow();
104-
try {
105-
channel.awaitTermination(CHANNEL_SHUTDOWN_TIMEOUT.getSeconds(), SECONDS);
106-
} catch (InterruptedException e) {
107-
Thread.currentThread().interrupt();
108-
logger.log(Level.WARNING, "Channel to S2A was not shutdown.");
109-
}
110-
11198
}
11299

113100
@Override

0 commit comments

Comments
 (0)