[Bug Fix] Echo the rejected request epoch in FAILOVER_AUTH_NACK (#4654)
A NACK for an old election could be counted against the current one, since the receiver only checked the sender's header epoch. Carry the rejected request's epoch in the NACK and only count exact matches. Fixes #4627. **Wire format change.** `clusterMsgDataFailoverNack` grows from 1 byte (`reason`) to 16 bytes (`epoch`, `reason`, 7 reserved). `CLUSTER_NODE_FAILOVER_AUTH_NACK_SUPPORTED` is unchanged, and `clusterIsValidPacket` requires an exact length for this type, so a node with this change and a node without it will drop each other's NACKs (one `LL_WARNING` per dropped packet) and fall back to the timeout-based election retry that predates #3833. Nothing released sets that capability bit (#3833 is only on `unstable`), so this only affects mixed `unstable` builds; it is not a rolling-upgrade concern for any released version. Signed-off-by: Dante Knowles <xdk@amazon.com>
D
Dante Knowles committed
5c24e5d20df204fd247d8f700b887d372935fb84
Parent: 122ec7e
Committed by GitHub <noreply@github.com>
on 9/16/2026, 6:14:04 PM