Commit 5e4eefde authored by peria's avatar peria Committed by Commit bot

[SyncFS] Fix error of handling demoted dirty trackers

PromoteDemotedDirtyTrackers() confused demoted dirty trackers and
non-demoted dirty trackers.

BUG=None
TEST=./unit_tests --gtest_filter="MetadataDatabaseIndex*"

Review URL: https://codereview.chromium.org/480683003

Cr-Commit-Position: refs/heads/master@{#291651}
parent 77b343e0
...@@ -539,9 +539,9 @@ void MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTracker(int64 tracker_id) { ...@@ -539,9 +539,9 @@ void MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTracker(int64 tracker_id) {
bool MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTrackers() { bool MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTrackers() {
bool promoted = false; bool promoted = false;
scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator());
for (itr->Seek(kDirtyIDKeyPrefix); itr->Valid(); itr->Next()) { for (itr->Seek(kDemotedDirtyIDKeyPrefix); itr->Valid(); itr->Next()) {
std::string id_str; std::string id_str;
if (!RemovePrefix(itr->key().ToString(), kDirtyIDKeyPrefix, &id_str)) if (!RemovePrefix(itr->key().ToString(), kDemotedDirtyIDKeyPrefix, &id_str))
break; break;
int64 tracker_id; int64 tracker_id;
...@@ -549,7 +549,7 @@ bool MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTrackers() { ...@@ -549,7 +549,7 @@ bool MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTrackers() {
continue; continue;
db_->Delete(itr->key().ToString()); db_->Delete(itr->key().ToString());
db_->Put(GenerateDemotedDirtyIDKey(tracker_id), std::string()); db_->Put(GenerateDirtyIDKey(tracker_id), std::string());
promoted = true; promoted = true;
} }
return promoted; return promoted;
......
...@@ -630,6 +630,11 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, DirtyTrackersTest) { ...@@ -630,6 +630,11 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, DirtyTrackersTest) {
WriteToDB(); WriteToDB();
EXPECT_EQ(1U, index()->CountDirtyTracker()); EXPECT_EQ(1U, index()->CountDirtyTracker());
EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker()); EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker());
// Demoted trackers
EXPECT_TRUE(index()->HasDemotedDirtyTracker());
EXPECT_TRUE(index()->PromoteDemotedDirtyTrackers());
EXPECT_FALSE(index()->HasDemotedDirtyTracker());
} }
} // namespace drive_backend } // namespace drive_backend
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment