Follow-up from #333 (requested by @jdheyburn in the #333 review).
#333 adds a reconcile phase that heals a persistent cluster whose members all restarted with new pod IPs (#275): stale peer entries are detected by node ID against the live scraped state and re-introduced with CLUSTER MEET.
This issue tracks an e2e test covering that path, to be added once #333 merges:
- Create a ValkeyCluster (3 shards, 1 replica, persistence enabled, appendonly).
- Wait Ready; write a marker key.
kubectl delete pod --all in the namespace — all pods restart simultaneously, every pod IP changes while each nodes.conf still holds the old peer IPs.
- Assert: a
StaleAddressesHealed event is emitted, the CR returns to Ready with cluster_state:ok within a bounded window (~1 min), and the marker key is still readable — without any manual CLUSTER MEET.
Optionally also assert the negative: no NodeForgetFailed/forget of live members during recovery (the #333 forget guard).
I'll pick this up after #333 lands.
Follow-up from #333 (requested by @jdheyburn in the #333 review).
#333 adds a reconcile phase that heals a persistent cluster whose members all restarted with new pod IPs (#275): stale peer entries are detected by node ID against the live scraped state and re-introduced with CLUSTER MEET.
This issue tracks an e2e test covering that path, to be added once #333 merges:
kubectl delete pod --allin the namespace — all pods restart simultaneously, every pod IP changes while each nodes.conf still holds the old peer IPs.StaleAddressesHealedevent is emitted, the CR returns to Ready withcluster_state:okwithin a bounded window (~1 min), and the marker key is still readable — without any manual CLUSTER MEET.Optionally also assert the negative: no
NodeForgetFailed/forget of live members during recovery (the #333 forget guard).I'll pick this up after #333 lands.