- Notifications
You must be signed in to change notification settings - Fork28
Commit41803d5
committed
Fix possible core dump in parallel restore when using a TOC list.
Commit3eb9a5e unintentionally introduced an ordering dependencyinto restore_toc_entries_prefork(). The existing coding ofreduce_dependencies() contains a check to skip moving a TOC entryto the ready_list if it wasn't initially in the pending_list.This used to suffice to prevent reduce_dependencies() from trying tomove anything into the ready_list during restore_toc_entries_prefork(),because the pending_list stayed empty throughout that phase; but it nolonger does. The problem doesn't manifest unless the TOC has beenreordered by SortTocFromFile, which is how I missed it in testing.To fix, just add a test for ready_list == NULL, converting the callwith NULL from a poor man's sanity check into an explicit commandnot to touch TOC items' list membership. Clarify some of the commentsaround this; in particular, note the primary purpose of the check forpending_list membership, which is to ensure that we can't try to restorethe same item twice, in case a TOC list forces it to be restored beforeits dependency count goes to zero.Per report from Fabrízio de Royes Mello. Back-patch to 9.3, like theprevious commit.Discussion:https://postgr.es/m/CAFcNs+pjuv0JL_x4+=71TPUPjdLHOXA4YfT32myj_OrrZb4ohA@mail.gmail.com1 parentc343314 commit41803d5
1 file changed
+14
-9
lines changedLines changed: 14 additions & 9 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
3796 | 3796 |
| |
3797 | 3797 |
| |
3798 | 3798 |
| |
3799 |
| - | |
3800 |
| - | |
| 3799 | + | |
| 3800 | + | |
| 3801 | + | |
3801 | 3802 |
| |
3802 | 3803 |
| |
3803 | 3804 |
| |
| |||
3844 | 3845 |
| |
3845 | 3846 |
| |
3846 | 3847 |
| |
3847 |
| - | |
| 3848 | + | |
3848 | 3849 |
| |
3849 | 3850 |
| |
3850 | 3851 |
| |
| |||
4521 | 4522 |
| |
4522 | 4523 |
| |
4523 | 4524 |
| |
4524 |
| - | |
| 4525 | + | |
4525 | 4526 |
| |
4526 | 4527 |
| |
4527 | 4528 |
| |
| |||
4538 | 4539 |
| |
4539 | 4540 |
| |
4540 | 4541 |
| |
4541 |
| - | |
4542 |
| - | |
4543 |
| - | |
| 4542 | + | |
| 4543 | + | |
| 4544 | + | |
| 4545 | + | |
| 4546 | + | |
| 4547 | + | |
4544 | 4548 |
| |
4545 | 4549 |
| |
4546 | 4550 |
| |
4547 |
| - | |
| 4551 | + | |
| 4552 | + | |
4548 | 4553 |
| |
4549 |
| - | |
| 4554 | + | |
4550 | 4555 |
| |
4551 | 4556 |
| |
4552 | 4557 |
| |
|
0 commit comments
Comments
(0)