diff options
author | Mike Wiacek <mjwiacek@google.com> | 2015-08-11 15:36:45 -0700 |
---|---|---|
committer | Chris Mumford <cmumford@chromium.org> | 2015-12-09 10:34:57 -0800 |
commit | ce45404bba80d6f85057b596cd716d6c4759dcad (patch) | |
tree | b504aee6ceee8d84cda31942f770c9b2b902594f /db/log_reader.cc | |
parent | b9afa1f2e79e928e08f11e907e8688b6d89cfd2f (diff) | |
download | leveldb-ce45404bba80d6f85057b596cd716d6c4759dcad.tar.gz |
Suppress error reporting after seeking but before a valid First or Full record is encountered.
Fix a spelling mistake.
Diffstat (limited to 'db/log_reader.cc')
-rw-r--r-- | db/log_reader.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/db/log_reader.cc b/db/log_reader.cc index e44b66c..6d4a5b2 100644 --- a/db/log_reader.cc +++ b/db/log_reader.cc @@ -25,7 +25,8 @@ Reader::Reader(SequentialFile* file, Reporter* reporter, bool checksum, eof_(false), last_record_offset_(0), end_of_buffer_offset_(0), - initial_offset_(initial_offset) { + initial_offset_(initial_offset), + resyncing_(initial_offset > 0) { } Reader::~Reader() { @@ -74,6 +75,17 @@ bool Reader::ReadRecord(Slice* record, std::string* scratch) { while (true) { uint64_t physical_record_offset = end_of_buffer_offset_ - buffer_.size(); const unsigned int record_type = ReadPhysicalRecord(&fragment); + if (resyncing_) { + if (record_type == kMiddleType) { + continue; + } else if (record_type == kLastType) { + resyncing_ = false; + continue; + } else { + resyncing_ = false; + } + } + switch (record_type) { case kFullType: if (in_fragmented_record) { |