Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ public SwapChannelCredentialsResult swapChannelCredentials(ChannelCredentials ch

@Override
public void close() {
if (closed) {
return;
}
closed = true;
executorService = scheduledExecutorPool.returnObject(executorService);
offloadExecutor = offloadExecutorPool.returnObject(offloadExecutor);
Expand Down
8 changes: 8 additions & 0 deletions cronet/src/main/java/io/grpc/cronet/CronetChannelBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ static class CronetTransportFactory implements ClientTransportFactory {
private final boolean usingSharedScheduler;
private final boolean useGetForSafeMethods;
private final boolean usePutForIdempotentMethods;
private boolean closed;

private CronetTransportFactory(
StreamBuilderFactory streamFactory,
Expand All @@ -271,6 +272,9 @@ private CronetTransportFactory(
@Override
public ConnectionClientTransport newClientTransport(
SocketAddress addr, ClientTransportOptions options, ChannelLogger channelLogger) {
if (closed) {
throw new IllegalStateException("The transport factory is closed.");
}
InetSocketAddress inetSocketAddr = (InetSocketAddress) addr;
return new CronetClientTransport(streamFactory, inetSocketAddr, options.getAuthority(),
options.getUserAgent(), options.getEagAttributes(), executor, maxMessageSize,
Expand All @@ -289,6 +293,10 @@ public SwapChannelCredentialsResult swapChannelCredentials(ChannelCredentials ch

@Override
public void close() {
if (closed) {
return;
}
closed = true;
if (usingSharedScheduler) {
SharedResourceHolder.release(GrpcUtil.TIMER_SERVICE, timeoutService);
}
Expand Down
Loading