[SERVER-58410] Discontinue writing to appliedThrough/minValid as part of secondary batch application Created: 10/Jul/21 Updated: 29/Oct/23 Resolved: 18/Jan/22 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 5.3.0 |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Daniel Gottlieb (Inactive) | Assignee: | Lingzhi Deng |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | TechnicalDebt, tech-debt, techdebt | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Backport Requested: |
v5.0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sprint: | Replication 2021-11-29, Replication 2021-12-13, Replication 2021-12-27, Replication 2022-01-10, Replication 2022-01-24 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Linked BF Score: | 170 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
|
appliedThrough/minValid are for a crash recovery mechanism that allowed secondaries to apply oplog entries in parallel in back in a time when every write was journaled. Modern MongoDB with a standard configuration (WT + stable checkpoints) have no need for these values. appliedThrough has been replaced with the stable checkpoints timestamp (recoveryTimestamp). minValid is obsoleted as we only checkpoint at a timestamp where all previous writes have been committed. Writing to appliedThrough + minValid for each batch can have a noticeable performance cost in addition to breaking a WT contract (albeit in a benign way, it causes some maintainability problems with WT). We must(ish) choose a timestamp when writing to this document, and that timestamp is often the stable timestamp. But for clarity, I think the values should stay and still the server should maintain existing behavior when those values exist. I believe backup/restore relies on them as well as maybe initial sync and rollback via refetch? The complete ask:
|
| Comments |
| Comment by Githook User [ 18/Jan/22 ] |
|
Author: {'name': 'Lingzhi Deng', 'email': 'lingzhi.deng@mongodb.com', 'username': 'ldennis'}Message: |
| Comment by Githook User [ 15/Jan/22 ] |
|
Author: {'name': 'Lingzhi Deng', 'email': 'lingzhi.deng@mongodb.com', 'username': 'ldennis'}Message: |
| Comment by Daniel Gottlieb (Inactive) [ 14/Oct/21 ] |
|
cc louis.williams, yuhong.zhang, I believe most paths to removing mixed-mode writes on this collection also result in resolving this ticket. I'll refrain from making a separate ticket that asks to remove mixed-mode writes on local.replset.minvalid to achieve |