fix open failure with empty wal
Summary: Closes https://github.com/facebook/rocksdb/pull/1490 Differential Revision: D4158821 Pulled By: IslamAbdelRahman fbshipit-source-id: 59b73f4
This commit is contained in:
parent
4e20c5da20
commit
c90fef88b1
@ -941,6 +941,12 @@ TEST_F(ColumnFamilyTest, CrashAfterFlush) {
|
|||||||
db_options_.env = env_;
|
db_options_.env = env_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(ColumnFamilyTest, OpenNonexistentColumnFamily) {
|
||||||
|
ASSERT_OK(TryOpen({"default"}));
|
||||||
|
Close();
|
||||||
|
ASSERT_TRUE(TryOpen({"default", "dne"}).IsInvalidArgument());
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef ROCKSDB_LITE // WaitForFlush() is not supported
|
#ifndef ROCKSDB_LITE // WaitForFlush() is not supported
|
||||||
// Makes sure that obsolete log files get deleted
|
// Makes sure that obsolete log files get deleted
|
||||||
TEST_F(ColumnFamilyTest, DifferentWriteBufferSizes) {
|
TEST_F(ColumnFamilyTest, DifferentWriteBufferSizes) {
|
||||||
|
@ -1688,6 +1688,9 @@ Status DBImpl::RecoverLogFiles(const std::vector<uint64_t>& log_numbers,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// True if there's any data in the WALs; if not, we can skip re-processing
|
||||||
|
// them later
|
||||||
|
bool data_seen = false;
|
||||||
if (!read_only) {
|
if (!read_only) {
|
||||||
// no need to refcount since client still doesn't have access
|
// no need to refcount since client still doesn't have access
|
||||||
// to the DB and can not drop column families while we iterate
|
// to the DB and can not drop column families while we iterate
|
||||||
@ -1723,6 +1726,7 @@ Status DBImpl::RecoverLogFiles(const std::vector<uint64_t>& log_numbers,
|
|||||||
cfd->CreateNewMemtable(*cfd->GetLatestMutableCFOptions(),
|
cfd->CreateNewMemtable(*cfd->GetLatestMutableCFOptions(),
|
||||||
versions_->LastSequence());
|
versions_->LastSequence());
|
||||||
}
|
}
|
||||||
|
data_seen = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// write MANIFEST with update
|
// write MANIFEST with update
|
||||||
@ -1748,7 +1752,7 @@ Status DBImpl::RecoverLogFiles(const std::vector<uint64_t>& log_numbers,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flushed) {
|
if (data_seen && !flushed) {
|
||||||
// Mark these as alive so they'll be considered for deletion later by
|
// Mark these as alive so they'll be considered for deletion later by
|
||||||
// FindObsoleteFiles()
|
// FindObsoleteFiles()
|
||||||
for (auto log_number : log_numbers) {
|
for (auto log_number : log_numbers) {
|
||||||
|
Loading…
Reference in New Issue
Block a user