diff --git a/sdks/java/fn-execution/src/main/java/org/apache/beam/sdk/fn/channel/ManagedChannelFactory.java b/sdks/java/fn-execution/src/main/java/org/apache/beam/sdk/fn/channel/ManagedChannelFactory.java index 4b172f169fb2..70e805abeabc 100644 --- a/sdks/java/fn-execution/src/main/java/org/apache/beam/sdk/fn/channel/ManagedChannelFactory.java +++ b/sdks/java/fn-execution/src/main/java/org/apache/beam/sdk/fn/channel/ManagedChannelFactory.java @@ -89,6 +89,11 @@ public ManagedChannel forDescriptor(ApiServiceDescriptor apiServiceDescriptor) { // Set the message size to max value here. The actual size is governed by the // buffer size in the layers above. .maxInboundMessageSize(Integer.MAX_VALUE) + // Disable automatic retries as it introduces complexity and we send long-lived + // rpcs which will exceed the per-rpc retry request buffer and not be retried + // anyway. See + // https://github.com/grpc/proposal/blob/master/A6-client-retries.md#when-retries-are-valid + .disableRetry() .intercept(interceptors); if (directExecutor) { channelBuilder = channelBuilder.directExecutor();