[SERVER-33159] RTT storage recovery from unclean shutdown expects all WT tables to exist Created: 07/Feb/18 Updated: 29/Oct/23 Resolved: 28/Feb/18 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Storage |
| Affects Version/s: | None |
| Fix Version/s: | 3.7.3 |
| Type: | New Feature | Priority: | Major - P3 |
| Reporter: | Daniel Gottlieb (Inactive) | Assignee: | Kyle Suarez |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | rollback-functional | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||
| Sprint: | Repl 2018-02-26, Repl 2018-03-12 | ||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||
| Description |
|
Creating/dropping WiredTiger tables are not "transactionable" operations, they take effect immediately. MongoDB maps collections (and indexes) to WiredTiger tables with the following algorithm: Create:
Drop:
If a crash happens, there are three cases to consider:
However, a combination of stable checkpoints and turning off journaling for the `_mdb_catalog` changes this expectation. When a node crashes, the data on disk may still contain the `_mdb_catalog` entry for a dropped collection, but the table will be missing. This ticket is to coerce the storage engine into believing this is a legal state, specifically in the case of crash recovery. In this mode, the storage engine will drop collections documents from the `_mdb_catalog` when their corresponding table is found not to exist. There's a followup ticket, to be written, where the goal is to make storage engine drops safe in this regard in a more robust way. |
| Comments |
| Comment by Githook User [ 28/Feb/18 ] |
|
Author: {'email': 'kyle.suarez@mongodb.com', 'name': 'Kyle Suarez', 'username': 'ksuarz'}Message: |