Commit cff1db2
committed
fix(dist-memory): broaden set-forward promotion to any transport error
Previously, `handleForwardPrimary` only promoted to a replica owner
when the forward error matched the in-process transport's
`ErrBackendNotFound` sentinel. HTTP/gRPC transports against a stopped
node surface `net.OpError`, `io.EOF`, or `context.DeadlineExceeded`
instead — causing writes to fail silently for keys whose primary had
just been killed, rather than falling through to a replica.
Promotion now triggers on any non-nil forward error when the local
node is listed in `owners[1:]` and still owns the key locally
(defensive against a stale ring snapshot). Spurious promotion on a
transient blip is benign: `applySet` version-compares on the receiver
and `chooseNewer` / merkle anti-entropy reconcile divergent
`(version, origin)` pairs via the existing LWW rule.
Add `TestDistSet_PromotesOnGenericForwardError` which uses chaos hooks
at `DropRate=1.0` to deterministically force a generic forward error
and asserts the Set succeeds via promotion; `TestDistFailureRecovery`
continues to pass unchanged (the change widens the gate, doesn't
narrow it).
Also add a `check_command_exists` Makefile macro and CHANGELOG entry.1 parent b7d3449 commit cff1db2
4 files changed
Lines changed: 129 additions & 17 deletions
File tree
- pkg/backend
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
286 | 286 | | |
287 | 287 | | |
288 | 288 | | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
289 | 306 | | |
290 | 307 | | |
291 | 308 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
102 | 112 | | |
103 | 113 | | |
104 | 114 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3622 | 3622 | | |
3623 | 3623 | | |
3624 | 3624 | | |
3625 | | - | |
| 3625 | + | |
| 3626 | + | |
| 3627 | + | |
| 3628 | + | |
| 3629 | + | |
| 3630 | + | |
| 3631 | + | |
| 3632 | + | |
| 3633 | + | |
| 3634 | + | |
| 3635 | + | |
| 3636 | + | |
| 3637 | + | |
| 3638 | + | |
| 3639 | + | |
3626 | 3640 | | |
3627 | 3641 | | |
3628 | 3642 | | |
| |||
3632 | 3646 | | |
3633 | 3647 | | |
3634 | 3648 | | |
3635 | | - | |
3636 | | - | |
3637 | | - | |
3638 | | - | |
3639 | | - | |
3640 | | - | |
3641 | | - | |
3642 | | - | |
3643 | | - | |
3644 | | - | |
| 3649 | + | |
| 3650 | + | |
| 3651 | + | |
3645 | 3652 | | |
3646 | | - | |
| 3653 | + | |
| 3654 | + | |
| 3655 | + | |
| 3656 | + | |
| 3657 | + | |
| 3658 | + | |
| 3659 | + | |
| 3660 | + | |
3647 | 3661 | | |
3648 | 3662 | | |
3649 | | - | |
3650 | | - | |
3651 | | - | |
3652 | | - | |
3653 | | - | |
3654 | 3663 | | |
| 3664 | + | |
| 3665 | + | |
3655 | 3666 | | |
3656 | 3667 | | |
3657 | 3668 | | |
| |||
Lines changed: 74 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
0 commit comments