Find a file
anand76 97991960e9 Retry DB::Open upon a corruption detected while reading the MANIFEST (#12518)
Summary:
This PR is a counterpart of https://github.com/facebook/rocksdb/issues/12427 . On file systems that support storage level data checksum and reconstruction, retry opening the DB if a corruption is detected when reading the MANIFEST. This could be done in `log::Reader`, but its a little complicated since the sequential file would have to be reopened in order to re-read the same data, and we may miss some subtle corruptions that don't result in checksum mismatch. The approach chosen here instead is to make the decision to retry in `DBImpl::Recover`, based on either an explicit corruption in the MANIFEST file, or missing SST files due to bad data in the MANIFEST.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/12518

Reviewed By: ajkr

Differential Revision: D55932155

Pulled By: anand1976

fbshipit-source-id: 51755a29b3eb14b9d8e98534adb2e7d54b12ced9
2024-04-18 17:36:33 -07:00
.circleci
.github
buckifier
build_tools Skip io_uring feature test when building with fbcode (#12525) 2024-04-11 12:46:15 -07:00
cache
cmake
coverage
db Retry DB::Open upon a corruption detected while reading the MANIFEST (#12518) 2024-04-18 17:36:33 -07:00
db_stress_tool Add more public APIs to crash/stress test (#12541) 2024-04-16 15:43:26 -07:00
docs
env
examples
file Retry DB::Open upon a corruption detected while reading the MANIFEST (#12518) 2024-04-18 17:36:33 -07:00
fuzz
include/rocksdb Reset user-facing wide-column stuctures upon deserialization failures (#12562) 2024-04-18 13:08:34 -07:00
java Fix exception on RocksDB.getColumnFamilyMetaData() (#12474) 2024-04-05 13:55:18 -07:00
logging
memory
memtable
microbench
monitoring
options Add more missing options in crash test (#12508) 2024-04-08 09:48:03 -07:00
plugin
port
table Add support in SstFileReader to get a raw table iterator (#12385) 2024-04-02 21:23:06 -07:00
test_util
third-party
tools Disallow inplace_update_support with allow_concurrent_memtable_write (#12550) 2024-04-16 19:41:38 -07:00
trace_replay
unreleased_history Retry DB::Open upon a corruption detected while reading the MANIFEST (#12518) 2024-04-18 17:36:33 -07:00
util Make autovector call default constructor explicitly before move/copy (#12499) 2024-04-04 12:33:05 -07:00
utilities Retry DB::Open upon a corruption detected while reading the MANIFEST (#12518) 2024-04-18 17:36:33 -07:00
.clang-format
.gitignore
.lgtm.yml
.watchmanconfig
AUTHORS
CMakeLists.txt MultiCFIterator Refactor - CoalescingIterator & AttributeGroupIterator (#12480) 2024-04-11 11:34:04 -07:00
CODE_OF_CONDUCT.md
common.mk
CONTRIBUTING.md
COPYING
crash_test.mk
DEFAULT_OPTIONS_HISTORY.md
DUMP_FORMAT.md
HISTORY.md
INSTALL.md
issue_template.md
LANGUAGE-BINDINGS.md
LICENSE.Apache
LICENSE.leveldb
Makefile Add support in SstFileReader to get a raw table iterator (#12385) 2024-04-02 21:23:06 -07:00
PLUGINS.md
README.md
rocksdb.pc.in
src.mk MultiCFIterator Refactor - CoalescingIterator & AttributeGroupIterator (#12480) 2024-04-11 11:34:04 -07:00
TARGETS MultiCFIterator Refactor - CoalescingIterator & AttributeGroupIterator (#12480) 2024-04-11 11:34:04 -07:00
thirdparty.inc
USERS.md
Vagrantfile
WINDOWS_PORT.md

RocksDB: A Persistent Key-Value Store for Flash and RAM Storage

CircleCI Status

RocksDB is developed and maintained by Facebook Database Engineering Team. It is built on earlier work on LevelDB by Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com)

This code is a library that forms the core building block for a fast key-value server, especially suited for storing data on flash drives. It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF) and Space-Amplification-Factor (SAF). It has multi-threaded compactions, making it especially suitable for storing multiple terabytes of data in a single database.

Start with example usage here: https://github.com/facebook/rocksdb/tree/main/examples

See the github wiki for more explanation.

The public interface is in include/. Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning.

Questions and discussions are welcome on the RocksDB Developers Public Facebook group and email list on Google Groups.

License

RocksDB is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses.