mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-04 12:02:55 +00:00
## Problem The communicator gRPC client must support changing the shard map on splits. Touches #11735. Requires #12476. ## Summary of changes * Wrap the shard set in a `ArcSwap` to allow swapping it out. * Add a new `ShardSpec` parameter struct to pass validated shard info to the client. * Add `update_shards()` to change the shard set. In-flight requests are allowed to complete using the old shards. * Restructure `get_page` to use a stable view of the shard map, and retry errors at the top (pre-split) level to pick up shard map changes. * Also marks `tonic::Status::Internal` as non-retryable, so that we can use it for client-side invariant checks without continually retrying these.
25 lines
555 B
TOML
25 lines
555 B
TOML
[package]
|
|
name = "pageserver_client_grpc"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[features]
|
|
testing = ["pageserver_api/testing"]
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
arc-swap.workspace = true
|
|
bytes.workspace = true
|
|
compute_api.workspace = true
|
|
futures.workspace = true
|
|
pageserver_api.workspace = true
|
|
pageserver_page_api.workspace = true
|
|
tokio.workspace = true
|
|
tokio-stream.workspace = true
|
|
tokio-util.workspace = true
|
|
tonic.workspace = true
|
|
tracing.workspace = true
|
|
utils.workspace = true
|
|
workspace_hack.workspace = true
|