Skip to content

Feature request: expose ChannelPoolSettings on GrpcStorageOptions.Builder #3553

Description

@SotaSato-stst

Is your feature request related to a problem? Please describe.

We use StorageOptions.grpc() with Direct Path on GKE for high-throughput writes (WriteChannel, resumable uploads). A single commit can trigger hundreds of concurrent uploads per pod.

GrpcStorageOptions builds InstantiatingGrpcChannelProvider without setChannelPoolSettings(), so the default is effectively one gRPC channel. With ~100+ concurrent RPCs, calls queue on that channel and we see high tail latency and underused bandwidth.

ChannelPoolSettings can be set on StorageSettings + StorageClient, but the high-level Storage API from StorageOptions.grpc().build().getService() offers no way to pass those settings.

(google-cloud-storage 2.34.0+, resolves to 2.55.x in our build.)

Describe the solution you'd like

Add setChannelPoolSettings(ChannelPoolSettings) to GrpcStorageOptions.Builder, wired through to InstantiatingGrpcChannelProvider in resolveSettingsAndOpts(). Default unchanged when unset.

Storage storage = StorageOptions.grpc()
    .setProjectId(projectId)
    .setChannelPoolSettings(ChannelPoolSettings.builder()
        .setInitialChannelCount(8)
        .setMaxChannelCount(16)
        .setMaxRpcsPerChannel(50)
        .build())
    .build()
    .getService();

Describe alternatives you've considered

  • StorageClient + custom StorageSettings — channel pool works, but not compatible with high-level Storage / WriteChannel.
  • Copy resolveSettingsAndOpts() in app code — fragile.
  • Upload concurrency limit in app — does not fix single-channel RPC queuing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    api: storageIssues related to the googleapis/java-storage API.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions