in grpc-gcp/src/main/java/com/google/cloud/grpc/GcpManagedChannel.java [1358:1381]
public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
long endTimeNanos = System.nanoTime() + unit.toNanos(timeout);
for (ChannelRef channelRef : channelRefs) {
if (channelRef.getChannel().isTerminated()) {
continue;
}
long awaitTimeNanos = endTimeNanos - System.nanoTime();
if (awaitTimeNanos <= 0) {
break;
}
channelRef.getChannel().awaitTermination(awaitTimeNanos, NANOSECONDS);
}
long awaitTimeNanos = endTimeNanos - System.nanoTime();
if (logMetricService != null && awaitTimeNanos > 0) {
//noinspection ResultOfMethodCallIgnored
logMetricService.awaitTermination(awaitTimeNanos, NANOSECONDS);
}
awaitTimeNanos = endTimeNanos - System.nanoTime();
if (awaitTimeNanos > 0) {
//noinspection ResultOfMethodCallIgnored
stateNotificationExecutor.awaitTermination(awaitTimeNanos, NANOSECONDS);
}
return isTerminated();
}