Commit d9d29b6
authored
fix(network): avoid disconnecting peers that return empty find responses at the chain tip (#10732)
* Add `chain_tip` getter to `MinimumPeerVersion`
In some places the `MinimumPeerVersion` becomes the way to access the
`ChainTip`, so we should make that explicit instead of adding unrelated
methods to `MinimumPeerVersion`.
* Remove `MinimumPeerVersion::chain_tip_height`
Refactor to keep `MinimumPeerVersion` more focused.
* Add `ChainTip::is_at_or_near_network_tip`
A helper method to check if the node can be considered to be synced.
* Only count stalls while syncing
Empty find block or find headers responses are expected once nodes are
synced.
* Test if stalls aren't tracked when close to tip
Ensure that the stall tracker only disconnects peers while the node is
syncing.
* Test disconnection after empty find responses
Empty find blocks or find headers responses can slow down
synchronization, so the peers should be penalized with a disconnection.
* Also test if the chain tip state is empty
Ensure that the initial behavior is to disconnect from peers that return
empty find blocks or headers responses.
* Test stall counts are preserved after sync
Ensure that if the node falls behind, it will still track stalls from
peers.
* Add a regression test for the disconnection issue
Simulate the scenario described in the issue, where an internal Zebra
node disconnects from its upstream (and sole peer) because it has
finished syncing.
* Update changelog
List the fix to not disconnect from peers missing blocks when synced.1 parent 6efb1d4 commit d9d29b6
9 files changed
Lines changed: 486 additions & 13 deletions
File tree
- zebra-chain
- src
- zebra-network
- src
- peer_set
- set/tests
- peer
- zebrad/tests/integration
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
8 | 16 | | |
9 | 17 | | |
10 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
8 | 16 | | |
9 | 17 | | |
10 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
18 | 25 | | |
19 | 26 | | |
20 | 27 | | |
| |||
118 | 125 | | |
119 | 126 | | |
120 | 127 | | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
121 | 140 | | |
122 | 141 | | |
123 | 142 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
8 | 16 | | |
9 | 17 | | |
10 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
674 | 675 | | |
675 | 676 | | |
676 | 677 | | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
677 | 683 | | |
678 | 684 | | |
679 | 685 | | |
| |||
683 | 689 | | |
684 | 690 | | |
685 | 691 | | |
686 | | - | |
| 692 | + | |
687 | 693 | | |
688 | 694 | | |
689 | 695 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
91 | 86 | | |
92 | 87 | | |
93 | 88 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
943 | 943 | | |
944 | 944 | | |
945 | 945 | | |
946 | | - | |
| 946 | + | |
947 | 947 | | |
948 | 948 | | |
949 | 949 | | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
950 | 957 | | |
951 | 958 | | |
952 | 959 | | |
| |||
0 commit comments