State and test what two daemon versions must agree on during a rolling update
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 45/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- rust
- Domain
- distributed-systems, documentation, release, testing
Research direction
Start with the handshake paths in crates/pacer-transport/src/grpc.rs and crates/pacer-daemon/src/peer.rs, then inspect SLOT_FORMAT_VERSION in crates/pacer-cache/src/slot.rs and the existing release documentation. Define the compatibility behavior and metric for unsupported protocol versions, document slot-format and chunk-size changes, and add a CI test using the previous release image that reads, writes, and invalidates through both versions.
Written by the indexing model from the issue text.
Description
A rolling update runs the old and new daemon versions side by side until the last node has restarted. Ring placement is safe across versions because ADR-0014 freezes the hash. Nothing states or tests what else the two versions must agree on.
Peers exchange protocol_version in Handshake (crates/pacer-proto/proto/pacer/v1/peer.proto), but both sides only log it (GrpcTransport in crates/pacer-transport/src/grpc.rs, PacerPeer::handshake in crates/pacer-daemon/src/peer.rs). A change to a peer RPC that protobuf cannot absorb would show up as failed fetches or invalidations during the roll, not as a refused peer.
The disk tier has the same question on upgrade. The slot format is versioned (SLOT_FORMAT_VERSION, crates/pacer-cache/src/slot.rs), and a slot of another version reads as free, which is safe but empties the node's disk tier. Release notes do not currently say when that happens.
Proposed:
- a written rule in the docs: a release interoperates with the previous release; peer protocol changes only add fields; a change that cannot be additive bumps
protocol_versionand ships across two releases; - act on the version in the handshake: a peer with an unsupported version is treated as unavailable, so requests fall back as they do for any unavailable peer, and a metric counts it;
- release notes state when a release changes
SLOT_FORMAT_VERSIONorchunk_size, since either empties the disk tier on upgrade; - a CI test that runs the previous release's image next to the current build and reads, writes and invalidates through both.
- Dominant language
- Rust
- Stars
- 16
- Forks
- 1
- Avg merge
- 7h 19m
- Merged PRs (30d)
- 29
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- Ships a Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from aws-samples/sample-pacer
-
Measure requester-mode hit rate with diskTier=store — the disk slot may drop every ETag witnessOpen
Difficulty 3/5 1-2 days Newbie friendliness 68/100
aws-samples/sample-pacer#73 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 42/100
aws-samples/sample-pacer#72 · 1 comment ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
aws-samples/sample-pacer#71 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 48/100
aws-samples/sample-pacer#69 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 3/5 1-2 days Newbie friendliness 68/100
aws-samples/sample-pacer#68 ·
Maintainers usually reply within 1 day
All issues in aws-samples/sample-pacer
Similar issues
-
A-UI C-Bug S-Needs-Triage
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
bevyengine/bevy#26330 ·
Maintainers usually reply within 2 days
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
chipsalliance/caliptra-sw#4335 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
aaif-goose/goose#13158 ·
Maintainers usually reply within 1 day
-
agent enhancement provider:anthropic providers triaged
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
can1357/oh-my-pi#17148 · 1 comment ·
Maintainers usually reply within 1 day
-
A-documentation good first issue
Difficulty 1/5 Under an hour Newbie friendliness 82/100
rust-lang/rust-clippy#17926 · 1 comment ·
Maintainers usually reply within 1 day