Commit ef9b810
committed
Fix WriteSet use-after-recycle in sequence reads
Sequence read completion recycled the WriteSet before registering slow bookies.
When a speculative read completed the entry, the subclass could still access the
recycled WriteSet. Late error callbacks could also enter reattempt logic and call
indexOf() after the request had already completed.
Snapshot slow bookie addresses before delegating to the shared complete path, and
ignore late errors after sequence read requests have completed. Apply the same
guard to ReadLAC sequence reads, where orderedEnsemble is also recycled on
completion.
Add regression coverage for normal sequence reads and ReadLAC covering both
completion and late-error paths.1 parent 34ec6a4 commit ef9b810
3 files changed
Lines changed: 432 additions & 14 deletions
File tree
- bookkeeper-server/src
- main/java/org/apache/bookkeeper/client
- test/java/org/apache/bookkeeper/client
Lines changed: 27 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
386 | 386 | | |
387 | 387 | | |
388 | 388 | | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
389 | 395 | | |
390 | 396 | | |
391 | 397 | | |
| |||
412 | 418 | | |
413 | 419 | | |
414 | 420 | | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
415 | 439 | | |
416 | 440 | | |
417 | | - | |
418 | | - | |
419 | | - | |
420 | | - | |
421 | | - | |
422 | | - | |
423 | | - | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
424 | 444 | | |
425 | 445 | | |
426 | 446 | | |
| |||
Lines changed: 23 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
189 | 189 | | |
190 | 190 | | |
191 | 191 | | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
192 | 198 | | |
193 | 199 | | |
194 | 200 | | |
| |||
398 | 404 | | |
399 | 405 | | |
400 | 406 | | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
401 | 410 | | |
402 | 411 | | |
403 | 412 | | |
| |||
422 | 431 | | |
423 | 432 | | |
424 | 433 | | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
425 | 446 | | |
426 | 447 | | |
427 | | - | |
428 | | - | |
429 | | - | |
430 | | - | |
431 | | - | |
432 | | - | |
433 | | - | |
| 448 | + | |
| 449 | + | |
434 | 450 | | |
435 | 451 | | |
436 | 452 | | |
| |||
0 commit comments