alts: add experimental keepalive (#12076)

This commit is contained in:
Gregory Cooke 2025-05-19 11:30:10 -04:00 committed by Eric Anderson
parent e772265530
commit 165e47699f
1 changed files with 11 additions and 3 deletions

View File

@ -21,6 +21,7 @@ import io.grpc.Channel;
import io.grpc.ClientCall; import io.grpc.ClientCall;
import io.grpc.ManagedChannel; import io.grpc.ManagedChannel;
import io.grpc.MethodDescriptor; import io.grpc.MethodDescriptor;
import io.grpc.internal.GrpcUtil;
import io.grpc.internal.SharedResourceHolder.Resource; import io.grpc.internal.SharedResourceHolder.Resource;
import io.grpc.netty.NettyChannelBuilder; import io.grpc.netty.NettyChannelBuilder;
import io.netty.channel.EventLoopGroup; import io.netty.channel.EventLoopGroup;
@ -45,6 +46,9 @@ final class HandshakerServiceChannel {
return new ChannelResource(handshakerAddress); return new ChannelResource(handshakerAddress);
} }
private static final boolean EXPERIMENTAL_ALTS_HANDSHAKER_KEEPALIVE_PARAMS =
GrpcUtil.getFlag("GRPC_EXPERIMENTAL_ALTS_HANDSHAKER_KEEPALIVE_PARAMS", false);
private static class ChannelResource implements Resource<Channel> { private static class ChannelResource implements Resource<Channel> {
private final String target; private final String target;
@ -57,12 +61,16 @@ final class HandshakerServiceChannel {
/* Use its own event loop thread pool to avoid blocking. */ /* Use its own event loop thread pool to avoid blocking. */
EventLoopGroup eventGroup = EventLoopGroup eventGroup =
new NioEventLoopGroup(1, new DefaultThreadFactory("handshaker pool", true)); new NioEventLoopGroup(1, new DefaultThreadFactory("handshaker pool", true));
ManagedChannel channel = NettyChannelBuilder.forTarget(target) NettyChannelBuilder channelBuilder =
NettyChannelBuilder.forTarget(target)
.channelType(NioSocketChannel.class, InetSocketAddress.class) .channelType(NioSocketChannel.class, InetSocketAddress.class)
.directExecutor() .directExecutor()
.eventLoopGroup(eventGroup) .eventLoopGroup(eventGroup)
.usePlaintext() .usePlaintext();
.build(); if (EXPERIMENTAL_ALTS_HANDSHAKER_KEEPALIVE_PARAMS) {
channelBuilder.keepAliveTime(10, TimeUnit.MINUTES).keepAliveTimeout(10, TimeUnit.SECONDS);
}
ManagedChannel channel = channelBuilder.build();
return new EventLoopHoldingChannel(channel, eventGroup); return new EventLoopHoldingChannel(channel, eventGroup);
} }