Conversation
…covery Add `scripts/tests/20-test-cluster-resilience.sh`, a 6-phase E2E script that validates distributed cache behaviour under a real Docker network: - Phase 1: seeds a pre-failure key batch across all 5 nodes - Phase 2: hard-stops `hypercache-3`, waits for surviving nodes to mark it suspect/dead via heartbeat - Phase 3: writes a second batch during the outage (quorum on 4 nodes, hints queued for the down node — Phase B.2 contract) - Phase 4: asserts surviving nodes serve every pre- and during-outage key - Phase 5: restarts the killed node - Phase 6: polls the resurrected node until it converges on the full state within 60 s (hint replay / anti-entropy paths) 24 assertions across the 6 phases. Catches regressions in hint-replay and anti-entropy that in-process tests cannot reach. Wire the script into the `test-cluster` Makefile target (runs after the smoke test, gated on smoke success, exit-code propagated through the existing teardown trap) and into the `cluster` CI workflow as a follow-up step after the cross-node smoke. Minor: fix arithmetic spacing in `wait-for-cluster.sh` to pass shellcheck.
…nation Implement SWIM self-refute so a node receiving a suspect/dead claim about itself at incarnation >= local bumps its incarnation and re-marks Alive, propagating the refutation cluster-wide via higher-incarnation-wins. Wire cross-process gossip over HTTP: - Add Gossip(ctx, targetID, members) to DistTransport interface - Add POST /internal/gossip server endpoint (auth-wrapped) - Introduce GossipMember wire DTO with projection helpers - runGossipTick now falls through to the HTTP transport for non-InProcessTransport clusters (previously a no-op) Swap encoding/json for github.com/goccy/go-json in the server binary. Remove the experimental qualifier from heartbeat/failure-detection docs — indirect probes (Phase B.1) and self-refutation (Phase E) together provide the SWIM guarantees the marker was tracking. Tests: TestDistSWIM_HTTPGossipExchange, TestDistSWIM_SelfRefute
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.