[SERVER-47053] Relax oplog application constraints in EMRC=false variants Created: 23/Mar/20 Updated: 29/Oct/23 Resolved: 24/Mar/20 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Replication |
| Affects Version/s: | 4.5.1 |
| Fix Version/s: | 4.7.0 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | William Schultz (Inactive) | Assignee: | William Schultz (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||||||
| Operating System: | ALL | ||||||||||||||||||||||||||||
| Backport Requested: |
v4.4
|
||||||||||||||||||||||||||||
| Sprint: | Repl 2020-04-06 | ||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||
| Linked BF Score: | 50 | ||||||||||||||||||||||||||||
| Description |
|
When using rollbackViaRefetch, we need to relax oplog application constraints when applying oplog entries during RECOVERING before we have reached minValid. Since we do not currently set our application mode to kRecovering correctly during this period, we should relax constraints by setting oplogApplicationEnforcesSteadyStateConstraints=false in the EMRC=false variants to avoid constraint violations that cause node crashes. |
| Comments |
| Comment by Daniel Gottlieb (Inactive) [ 08/Jun/20 ] |
|
Ah understood. I hadn't realized that the constraint checking was just for testing. No need to pre-emptively catch all the things!
4.8 would probably need to be aware that it can be starting on 4.6 data files. |
| Comment by William Schultz (Inactive) [ 08/Jun/20 ] |
|
daniel.gottlieb That sounds like a plausible and problematic scenario. However, it should be noted that currently (e.g. in 4.4), we relax constraints by default in production, so any issues with constraint enforcement should not be "real" issues yet. In In relation to potential constraint enforcement issues with EMRC=false, our thinking was that it may be a moot point, if we start enforcing constraints in production after we have removed EMRC=false entirely. The thought was that EMRC=false would likely be removed by 4.6, and we may not start enforcing constraints by default until 4.8 (or later), so we wouldn't have to worry about the interaction of EMRC=false and constraint enforcement in production. Does that make sense? I do think the scenario you described could be a real bug, but I don't feel as compelled to test it (or fix it) if EMRC=false will be going away for good in 4.6. If that bug turned up in a real BF, then that's different, and we would probably need to determine some way to address it, at least to avoid more BFs in this development cycle. |
| Comment by Daniel Gottlieb (Inactive) [ 08/Jun/20 ] |
|
william.schultz I've seen a few similar tickets filed. Can you tell me if the following case can happen and/or is handled?
|
| Comment by Githook User [ 26/Mar/20 ] |
|
Author: {'name': 'William Schultz', 'username': 'will62794', 'email': 'william.schultz@mongodb.com'}Message: |
| Comment by Githook User [ 24/Mar/20 ] |
|
Author: {'name': 'William Schultz', 'username': 'will62794', 'email': 'william.schultz@mongodb.com'}Message: |
| Comment by William Schultz (Inactive) [ 23/Mar/20 ] |
|
It should be acceptable to set oplogApplicationEnforcesSteadyStateConstraints:false on the entire majority read concern off variant, since we expect it is likely that we will remove EMRC=false entirely (PM-1769) before the enforcement of constraints is turned on by default in production. Right now we explicitly set oplogApplicationEnforcesSteadyStateConstraints:true in our tests. |