-
Notifications
You must be signed in to change notification settings - Fork 6.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RepairDB() drops unflushed non-default column families #5073
Comments
@simpkins - There should be a "lost/" directory containing the WALs and MANIFESTs that were deleted by running |
Yes, the data that was dropped is archived into lost/ and can be manually recovered by a human afterwards, but it still seems like a bug that calling RepairDB() on a valid DB removes this data and requires manual recovery afterwards. Note that this behavior is the same even if you call RepairDB() with an explicit list of all column families that should be present. |
Thanks @simpkins for the report. I confirm that I can reproduce the issue using the test that you provided. |
I clarified this issue in the wiki: https://github.com/facebook/rocksdb/wiki/RocksDB-Repairer#limitations until it is properly fixed. |
One thing we talked about doing years ago is having a |
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: simpkins@bf36f6d
The text was updated successfully, but these errors were encountered: