You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(cluster): single global sender counter and self-addressed replay guard
Replace per-target outbound seq counters in `PeerSeqSender` with a single
monotonic counter. The receiver's replay window is keyed by the sender's
`local_node_id`, so per-target counters from the same sender collide in
that window: seq=1 sent to A and seq=1 sent to B are indistinguishable
to any node that receives from this sender. A single counter makes every
outbound frame globally unique from the receiver's perspective.
Also skip the inbound replay-window check when `from_node_id` matches
the local node. In single-node tests and genuine self-dispatch, the
client and server share one `AuthContext`, so one `peer_seq_in` window
is touched by both the server-side request accept and the client-side
response accept. Without this guard, the second accept trips on the
first — the frame was never replayed; the window simply saw both
directions on the same entry.
Update `transport_security.rs` to use `tokio::sync::Mutex` for the
insecure-counter serialization lock so the guard can be held across
`.await` points without tripping `clippy::await_holding_lock`.
0 commit comments