diff --git a/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServerDefinition.java b/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServerDefinition.java index 5b77dda..37e8946 100644 --- a/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServerDefinition.java +++ b/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServerDefinition.java @@ -1,6 +1,7 @@ package org.hypertrace.core.serviceframework.grpc; import io.grpc.ServerInterceptor; +import java.time.Duration; import java.util.Collection; import java.util.List; import lombok.AccessLevel; @@ -17,6 +18,8 @@ public class GrpcPlatformServerDefinition { int port; int maxInboundMessageSize; @Builder.Default int maxRstPerMinute = 500; + @Builder.Default Duration maxConnectionAge = Duration.ZERO; + @Builder.Default Duration maxConnectionAgeGrace = Duration.ZERO; @Singular Collection serviceFactories; @Singular List serverInterceptors; } diff --git a/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServiceContainer.java b/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServiceContainer.java index f098a5a..435ea0f 100644 --- a/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServiceContainer.java +++ b/platform-grpc-service-framework/src/main/java/org/hypertrace/core/serviceframework/grpc/GrpcPlatformServiceContainer.java @@ -286,6 +286,13 @@ private ServerBuilder initializeBuilder(GrpcPlatformServerDefinition serverDe if (serverDefinition.getMaxRstPerMinute() > 0) { builder.maxRstFramesPerWindow(serverDefinition.getMaxRstPerMinute(), 60); } + if (!serverDefinition.getMaxConnectionAge().isZero()) { + builder.maxConnectionAge(serverDefinition.getMaxConnectionAge().toMillis(), MILLISECONDS); + } + if (!serverDefinition.getMaxConnectionAgeGrace().isZero()) { + builder.maxConnectionAgeGrace( + serverDefinition.getMaxConnectionAgeGrace().toMillis(), MILLISECONDS); + } // add micrometer-grpc interceptor to collect server metrics. builder.intercept( new MetricCollectingServerInterceptor(