diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2014-10-16 12:23:50 -0700 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2014-10-16 12:23:50 -0700 |
commit | 5b9f8425a515739e2149bf5bfb2ae6ed60bfbaf2 (patch) | |
tree | bacc7dd4d2f77da27499000d6f12655a3f6463f3 /src/leveldb/table/table.cc | |
parent | e8f6d54f1f58d9a5998e37367b84b427e51e1ad7 (diff) | |
parent | 4b0e2d75d78036e7e76fd9584e17b0379ba08d24 (diff) |
Merge src/leveldb changes for LevelDB 1.18.
Diffstat (limited to 'src/leveldb/table/table.cc')
-rw-r--r-- | src/leveldb/table/table.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/leveldb/table/table.cc b/src/leveldb/table/table.cc index 71c1756e5f..dff8a82590 100644 --- a/src/leveldb/table/table.cc +++ b/src/leveldb/table/table.cc @@ -41,7 +41,7 @@ Status Table::Open(const Options& options, Table** table) { *table = NULL; if (size < Footer::kEncodedLength) { - return Status::InvalidArgument("file is too short to be an sstable"); + return Status::Corruption("file is too short to be an sstable"); } char footer_space[Footer::kEncodedLength]; @@ -58,7 +58,11 @@ Status Table::Open(const Options& options, BlockContents contents; Block* index_block = NULL; if (s.ok()) { - s = ReadBlock(file, ReadOptions(), footer.index_handle(), &contents); + ReadOptions opt; + if (options.paranoid_checks) { + opt.verify_checksums = true; + } + s = ReadBlock(file, opt, footer.index_handle(), &contents); if (s.ok()) { index_block = new Block(contents); } @@ -92,6 +96,9 @@ void Table::ReadMeta(const Footer& footer) { // TODO(sanjay): Skip this if footer.metaindex_handle() size indicates // it is an empty block. ReadOptions opt; + if (rep_->options.paranoid_checks) { + opt.verify_checksums = true; + } BlockContents contents; if (!ReadBlock(rep_->file, opt, footer.metaindex_handle(), &contents).ok()) { // Do not propagate errors since meta info is not needed for operation @@ -120,6 +127,9 @@ void Table::ReadFilter(const Slice& filter_handle_value) { // We might want to unify with ReadBlock() if we start // requiring checksum verification in Table::Open. ReadOptions opt; + if (rep_->options.paranoid_checks) { + opt.verify_checksums = true; + } BlockContents block; if (!ReadBlock(rep_->file, opt, filter_handle, &block).ok()) { return; |