RepairDB() drops unflushed non-default column families
- Dominant language
- C++
- Stars
- 32.1k
- Forks
- 6.9k
- Avg merge
- 32m
- Merged PRs (30d)
- 1
Description
Calling RepairDB() on a valid DB that was shut down cleanly can drop all data in non-default column families if they were not explicitly flushed.
### Expected behavior
RepairDB() does not lose data if called on a database that does not actually have any corruption that needs to be repaird.
### Actual behavior
RepairDB() drops non-default column families that do not have data that was flushed into an SST.
### Steps to reproduce the behavior
Failing test case added here: https://github.com/simpkins/rocksdb/commit/bf36f6d39bac501da05c6ea64a1dd30e5a6ad6ea
Contributor guide
Research direction
Start at the RepairDB() entry point and inspect the failing test case linked in the issue's reproduction commit. Verify behavior on a clean database with unflushed non-default column families; done means RepairDB() preserves that data when no corruption requires repair.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100