Commit ad0baae
fix: monitor-driven nonce reset for stuck transactions (#899)
* fix: replace maxNonceDrift with monitor-driven nonce reset
Instead of the transactor detecting nonce drift on every PendingNonceAt
call (which conflicts with maxPendingTxs=2048), move stuck detection to
the Monitor. When the confirmed nonce doesn't advance for 30s while
there are pending txs, the Monitor signals the transactor to reset its
local nonce via a NonceOverride channel.
This cleanly separates concerns: the Monitor already tracks confirmed
nonces and pending transactions, making it the right place for stuck
detection. The transactor simply reacts to the override signal.
Replaces the maxNonceDrift approach from PR #896 (bug 2 fix).
Retains the retry loop fall-through fix (bug 1) from PR #896.
* review: fix data race in log, add monitor stuck detection tests
- Fix data race: len(m.waitMap) was read without lock in the stuck
detection log. Replaced hasPendingTxs() with pendingTxCount() that
returns the count under lock, reused in both the condition and log.
- Add SetStuckDuration() for testing with short durations.
- Add TestStuckDetectionSendsNonceOverride: verifies monitor sends
override when confirmed nonce doesn't advance with pending txs.
- Add TestNoOverrideWhenNonceAdvances: verifies no override fires
when the confirmed nonce advances before stuckDuration.1 parent 2a8b4d0 commit ad0baae
4 files changed
Lines changed: 275 additions & 66 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | 15 | | |
24 | 16 | | |
25 | 17 | | |
26 | 18 | | |
27 | 19 | | |
28 | | - | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
29 | 24 | | |
30 | 25 | | |
31 | 26 | | |
| 27 | + | |
32 | 28 | | |
33 | 29 | | |
34 | 30 | | |
| |||
46 | 42 | | |
47 | 43 | | |
48 | 44 | | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
53 | 48 | | |
54 | 49 | | |
55 | 50 | | |
56 | 51 | | |
57 | 52 | | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | 53 | | |
68 | 54 | | |
69 | 55 | | |
| |||
85 | 71 | | |
86 | 72 | | |
87 | 73 | | |
88 | | - | |
89 | 74 | | |
90 | 75 | | |
91 | 76 | | |
| |||
99 | 84 | | |
100 | 85 | | |
101 | 86 | | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
102 | 98 | | |
103 | 99 | | |
104 | 100 | | |
| |||
110 | 106 | | |
111 | 107 | | |
112 | 108 | | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | 109 | | |
127 | 110 | | |
128 | 111 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
152 | | - | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
153 | 177 | | |
154 | 178 | | |
155 | 179 | | |
156 | | - | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
157 | 186 | | |
158 | | - | |
159 | | - | |
160 | | - | |
| 187 | + | |
161 | 188 | | |
162 | | - | |
| 189 | + | |
163 | 190 | | |
164 | 191 | | |
165 | 192 | | |
| |||
170 | 197 | | |
171 | 198 | | |
172 | 199 | | |
173 | | - | |
| 200 | + | |
174 | 201 | | |
175 | 202 | | |
176 | 203 | | |
| |||
185 | 212 | | |
186 | 213 | | |
187 | 214 | | |
188 | | - | |
189 | | - | |
| 215 | + | |
| 216 | + | |
190 | 217 | | |
| 218 | + | |
191 | 219 | | |
192 | | - | |
193 | 220 | | |
194 | 221 | | |
195 | 222 | | |
196 | 223 | | |
197 | 224 | | |
198 | | - | |
| 225 | + | |
199 | 226 | | |
200 | 227 | | |
201 | 228 | | |
202 | | - | |
| 229 | + | |
203 | 230 | | |
204 | 231 | | |
205 | 232 | | |
206 | 233 | | |
207 | 234 | | |
208 | | - | |
209 | | - | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
210 | 241 | | |
211 | 242 | | |
212 | 243 | | |
| |||
216 | 247 | | |
217 | 248 | | |
218 | 249 | | |
219 | | - | |
| 250 | + | |
220 | 251 | | |
221 | 252 | | |
222 | 253 | | |
| |||
231 | 262 | | |
232 | 263 | | |
233 | 264 | | |
234 | | - | |
235 | | - | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
236 | 270 | | |
237 | 271 | | |
238 | 272 | | |
239 | 273 | | |
240 | 274 | | |
241 | | - | |
242 | | - | |
| 275 | + | |
| 276 | + | |
243 | 277 | | |
244 | 278 | | |
245 | 279 | | |
| |||
305 | 339 | | |
306 | 340 | | |
307 | 341 | | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
308 | 346 | | |
309 | 347 | | |
310 | 348 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
29 | 36 | | |
30 | 37 | | |
31 | 38 | | |
| |||
68 | 75 | | |
69 | 76 | | |
70 | 77 | | |
| 78 | + | |
71 | 79 | | |
72 | 80 | | |
73 | 81 | | |
| 82 | + | |
74 | 83 | | |
75 | 84 | | |
76 | 85 | | |
| |||
86 | 95 | | |
87 | 96 | | |
88 | 97 | | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
100 | 111 | | |
101 | 112 | | |
102 | 113 | | |
| |||
111 | 122 | | |
112 | 123 | | |
113 | 124 | | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
114 | 131 | | |
115 | 132 | | |
116 | 133 | | |
117 | 134 | | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
118 | 149 | | |
119 | 150 | | |
120 | 151 | | |
| |||
142 | 173 | | |
143 | 174 | | |
144 | 175 | | |
| 176 | + | |
| 177 | + | |
145 | 178 | | |
146 | 179 | | |
147 | 180 | | |
| |||
177 | 210 | | |
178 | 211 | | |
179 | 212 | | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
180 | 235 | | |
181 | 236 | | |
182 | 237 | | |
| |||
0 commit comments