[java-storage] Feature request: expose ChannelPoolSettings on GrpcStorageOptions.Builder

未關閉
#14,519 0 則留言 0 個 reaction 已指派 1 人 在 GitHub 檢視

維護者通常 1 天內回覆

@Dhriti07 已經在處理了。

開始於 2026年9月29日。

  • #3556 來自 @DeepikaMamidipelly009 —— 已關閉,未合併

評估

難度
3/5
預估耗時
1-2 天
新手友好度
76/100
Issue 類型
功能
描述清晰度
描述清楚
活躍度
冷清
技術堆疊
grpc, java
領域
api, backend, cloud

研究方向

Start in GrpcStorageOptions.Builder and follow resolveSettingsAndOpts() to see how InstantiatingGrpcChannelProvider is configured. Add the ChannelPoolSettings builder option, wire it through while preserving the unset default, and verify that the high-level Storage API exposes the configured pool settings.

由索引模型根據 Issue 內容生成。

描述

api: storage

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.
主要語言
Java
星號
2.1k
分支
1.2k
平均合併
2 天 14 小時
30 天內合併 PR
192

環境準備

  • 沒有 Dockerfile 或 Docker Compose 檔案
  • 沒有 Pull Request 範本
  • 閱讀貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

googleapis/google-cloud-java 的其他 Issue

查看 googleapis/google-cloud-java 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。