facebook / facebook/rocksdb

RepairDB() drops unflushed non-default column families

Open
#5,073 5 comments 0 reactions 0 assignees View on GitHub
up-for-grabs
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.