[SERVER-43356] May fail to recover after a rollbackViaRefetch if sync source no longer has required opTime Created: 16/Sep/19 Updated: 06/Dec/22 Resolved: 03/Jan/20 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Replication |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Vesselina Ratcheva (Inactive) | Assignee: | Backlog - Replication Team |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||
| Assigned Teams: |
Replication
|
||||||||||||
| Operating System: | ALL | ||||||||||||
| Participants: | |||||||||||||
| Linked BF Score: | 30 | ||||||||||||
| Description |
|
In order to reach a consistent state after doing a rollbackViaRefetch, the rollback node sets its own minValid to the top of sync source's oplog at the start of recovery. It therefore must be able to replicate and apply up to that lastApplied to complete the recovery. However, if at some point mid-recovery the necessary oplog entries are no longer in the set (either due to a rollback or an unclean shutdown), the rollback node will end up in an unrecoverable state as it may only choose a sync source that has them. |
| Comments |
| Comment by William Schultz (Inactive) [ 30/Sep/19 ] |
|
For what it's worth, |