forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitcaba8f0
committed
Fix corner case failure of new standby to follow new primary.
This only happens if (1) the new standby has no WAL available locally,(2) the new standby is starting from the old timeline, (3) the promotionhappened in the WAL segment from which the new standby is starting,(4) the timeline history file for the new timeline is available fromthe archive but the WAL files for are not (i.e. this is a race),(5) the WAL files for the new timeline are available via streaming,and (6) recovery_target_timeline='latest'.Commitee99427 introduced thislogic and was an improvement over the previous code, but it mishandledthis case. If recovery_target_timeline='latest' and restore_command isset, validateRecoveryParameters() can change recoveryTargetTLI to bedifferent from receiveTLI. If streaming is then tried afterward,expectedTLEs gets initialized with the history of the wrong timeline.It's supposed to be a list of entries explaining how to get to thetarget timeline, but in this case it ends up with a list of entriesexplaining how to get to the new standby's original timeline, whichisn't right.Dilip Kumar and Robert Haas, reviewed by Kyotaro Horiguchi.Discussion:http://postgr.es/m/CAFiTN-sE-jr=LB8jQuxeqikd-Ux+jHiXyh4YDiZMPedgQKup0g@mail.gmail.com1 parent845cad4 commitcaba8f0
File tree
3 files changed
+115
-1
lines changed- src
- backend/access/transam
- test/recovery/t
3 files changed
+115
-1
lines changedLines changed: 9 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
12658 | 12658 |
| |
12659 | 12659 |
| |
12660 | 12660 |
| |
| 12661 | + | |
| 12662 | + | |
| 12663 | + | |
| 12664 | + | |
| 12665 | + | |
| 12666 | + | |
| 12667 | + | |
| 12668 | + | |
12661 | 12669 |
| |
12662 | 12670 |
| |
12663 | 12671 |
| |
12664 | 12672 |
| |
12665 |
| - | |
| 12673 | + | |
12666 | 12674 |
| |
12667 | 12675 |
| |
12668 | 12676 |
| |
|
Lines changed: 96 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 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + |
Lines changed: 10 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + |
0 commit comments
Comments
(0)