leveldb/db
costan 8415f00eee leveldb: Report missing CURRENT manifest file as database corruption.
BTRFS reorders rename and write operations, so it is possible that a filesystem crash and recovery results in a situation where the file pointed to by CURRENT does not exist. DB::Open currently reports an I/O error in this case. Reporting database corruption is a better hint to the caller, which can attempt to recover the database or erase it and start over.

This issue is not merely theoretical. It was reported as having showed up in the wild at https://github.com/google/leveldb/issues/195 and at https://crbug.com/738961. Also, asides from the BTRFS case described above, incorrect data in CURRENT seems like a possible corruption case that should be handled gracefully.

The Env API changes here can be considered backwards compatible, because an implementation that returns Status::IOError instead of Status::NotFound will still get the same functionality as before.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=161432630
2017-07-10 14:14:00 -07:00
..
autocompact_test.cc LevelDB 1.13 2013-08-21 11:12:47 -07:00
builder.cc A number of fixes: 2011-10-31 17:22:06 +00:00
builder.h A number of fixes: 2011-10-31 17:22:06 +00:00
c_test.c Small fixes. 2012-10-16 16:17:53 -07:00
c.cc Small fixes. 2012-10-16 16:17:53 -07:00
corruption_test.cc LevelDB now attempts to reuse the preceding MANIFEST and log file when re-opened. 2015-08-11 14:56:39 -07:00
db_bench.cc Add option for max file size. The currend hard-coded value of 2M is inefficient in colossus. 2016-09-28 10:52:24 -07:00
db_impl.cc Add option for max file size. The currend hard-coded value of 2M is inefficient in colossus. 2016-09-28 10:52:24 -07:00
db_impl.h LevelDB now attempts to reuse the preceding MANIFEST and log file when re-opened. 2015-08-11 14:56:39 -07:00
db_iter.cc Release LevelDB 1.14 2013-09-19 13:49:19 -07:00
db_iter.h LevelDB 1.13 2013-08-21 11:12:47 -07:00
db_test.cc Add "approximate-memory-usage" property to leveldb::DB::GetProperty 2015-12-09 10:34:58 -08:00
dbformat_test.cc A number of fixes: 2011-10-31 17:22:06 +00:00
dbformat.cc Release leveldb 1.10 2013-05-14 17:03:07 -07:00
dbformat.h Release 1.18 2014-09-16 14:19:52 -07:00
dumpfile.cc Release 1.18 2014-09-16 14:19:52 -07:00
fault_injection_test.cc LevelDB now attempts to reuse the preceding MANIFEST and log file when re-opened. 2015-08-11 14:56:39 -07:00
filename_test.cc Release LevelDB 1.14 2013-09-19 13:49:19 -07:00
filename.cc Release LevelDB 1.14 2013-09-19 13:49:19 -07:00
filename.h Release LevelDB 1.14 2013-09-19 13:49:19 -07:00
leveldbutil.cc Putting build artifacts in subdirectory. 2016-01-29 16:10:00 -08:00
log_format.h Convert documentation to markdown. 2017-03-01 09:42:25 -08:00
log_reader.cc This CL fixes a bug encountered when reading records from leveldb files that have been split, as in a [] input task split. 2016-03-31 15:53:34 -07:00
log_reader.h Suppress error reporting after seeking but before a valid First or Full record is encountered. 2015-12-09 10:34:57 -08:00
log_test.cc This CL fixes a bug encountered when reading records from leveldb files that have been split, as in a [] input task split. 2016-03-31 15:53:34 -07:00
log_writer.cc LevelDB now attempts to reuse the preceding MANIFEST and log file when re-opened. 2015-08-11 14:56:39 -07:00
log_writer.h LevelDB now attempts to reuse the preceding MANIFEST and log file when re-opened. 2015-08-11 14:56:39 -07:00
memtable.cc A number of fixes: 2011-10-31 17:22:06 +00:00
memtable.h Resolve race when getting approximate-memory-usage property 2015-12-09 11:27:50 -08:00
recovery_test.cc leveldb: Report missing CURRENT manifest file as database corruption. 2017-07-10 14:14:00 -07:00
repair.cc Release 1.18 2014-09-16 14:19:52 -07:00
skiplist_test.cc Fix signed/unsigned mismatch on VC++ builds 2016-02-19 13:59:19 -08:00
skiplist.h Move header guard below copyright banner. 2014-12-11 08:04:40 -08:00
snapshot.h Clean up layering of storage/leveldb/... 2014-12-11 08:02:45 -08:00
table_cache.cc Release LevelDB 1.14 2013-09-19 13:49:19 -07:00
table_cache.h Added bloom filter support. 2012-04-17 08:36:46 -07:00
version_edit_test.cc A number of fixes: 2011-10-31 17:22:06 +00:00
version_edit.cc A number of fixes: 2011-10-31 17:22:06 +00:00
version_edit.h A number of fixes: 2011-10-31 17:22:06 +00:00
version_set_test.cc A number of fixes: 2011-10-31 17:22:06 +00:00
version_set.cc leveldb: Report missing CURRENT manifest file as database corruption. 2017-07-10 14:14:00 -07:00
version_set.h Add option for max file size. The currend hard-coded value of 2M is inefficient in colossus. 2016-09-28 10:52:24 -07:00
write_batch_internal.h Clean up layering of storage/leveldb/... 2014-12-11 08:02:45 -08:00
write_batch_test.cc LevelDB: Add WriteBatch::ApproximateSize(). 2017-07-10 14:13:30 -07:00
write_batch.cc LevelDB: Add WriteBatch::ApproximateSize(). 2017-07-10 14:13:30 -07:00