Index: chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc |
index ab82ca252b3e0d69c78773d99accc9e32f94fbcb..23b809d3510759df2500a3c5ce2cd4917c27e962 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc |
@@ -515,6 +515,7 @@ void MetadataDatabaseIndexOnDisk::DemoteDirtyTracker(int64 tracker_id) { |
db_->Delete(key); |
db_->Put(GenerateDemotedDirtyIDKey(tracker_id), std::string()); |
+ --num_dirty_trackers_; |
} |
bool MetadataDatabaseIndexOnDisk::HasDemotedDirtyTracker() const { |
@@ -532,6 +533,7 @@ void MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTracker(int64 tracker_id) { |
if (db_->Get(demoted_key, &empty).ok()) { |
db_->Delete(demoted_key); |
db_->Put(GenerateDirtyIDKey(tracker_id), std::string()); |
+ ++num_dirty_trackers_; |
} |
} |
@@ -549,6 +551,7 @@ bool MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTrackers() { |
db_->Delete(itr->key().ToString()); |
db_->Put(GenerateDirtyIDKey(tracker_id), std::string()); |
+ ++num_dirty_trackers_; |
promoted = true; |
} |
return promoted; |
@@ -696,6 +699,7 @@ int64 MetadataDatabaseIndexOnDisk::DeleteTrackerIndexes() { |
int64 num_deletes_before = db_->num_deletes(); |
for (size_t i = 0; i < arraysize(kIndexPrefixes); ++i) |
DeleteKeyStartsWith(kIndexPrefixes[i]); |
+ num_dirty_trackers_ = 0; |
return db_->num_deletes() - num_deletes_before; |
} |
@@ -704,7 +708,8 @@ LevelDBWrapper* MetadataDatabaseIndexOnDisk::GetDBForTesting() { |
} |
MetadataDatabaseIndexOnDisk::MetadataDatabaseIndexOnDisk(LevelDBWrapper* db) |
- : db_(db) { |
+ : db_(db), |
+ num_dirty_trackers_(0) { |
// TODO(peria): Add UMA to measure the number of FileMetadata, FileTracker, |
// and AppRootId. |
service_metadata_ = InitializeServiceMetadata(db_); |
@@ -727,9 +732,9 @@ MetadataDatabaseIndexOnDisk::MetadataDatabaseIndexOnDisk(LevelDBWrapper* db) |
BuildTrackerIndexes(); |
db_->Put(kLastValidationTimeKey, |
base::Int64ToString(base::Time::Now().ToInternalValue())); |
+ } else { |
+ num_dirty_trackers_ = CountDirtyTrackerInternal(); |
} |
- |
- num_dirty_trackers_ = CountDirtyTrackerInternal(); |
} |
void MetadataDatabaseIndexOnDisk::AddToAppIDIndex(const FileTracker& tracker) { |
@@ -1000,9 +1005,10 @@ void MetadataDatabaseIndexOnDisk::UpdateInDirtyTrackerIndexes( |
DVLOG(1) << " Remove from dirty trackers IDs: " << tracker_id; |
+ if (DBHasKey(dirty_key)) |
+ --num_dirty_trackers_; |
db_->Delete(dirty_key); |
db_->Delete(demoted_key); |
- --num_dirty_trackers_; |
} else if (!old_tracker.dirty() && new_tracker.dirty()) { |
DCHECK(!DBHasKey(dirty_key)); |
DCHECK(!DBHasKey(demoted_key)); |
@@ -1023,9 +1029,10 @@ void MetadataDatabaseIndexOnDisk::RemoveFromDirtyTrackerIndexes( |
DCHECK(DBHasKey(dirty_key) || DBHasKey(demoted_key)); |
DVLOG(1) << " Remove from dirty tracker IDs: " << tracker_id; |
+ if (DBHasKey(dirty_key)) |
+ --num_dirty_trackers_; |
db_->Delete(dirty_key); |
db_->Delete(demoted_key); |
- --num_dirty_trackers_; |
} |
} |
@@ -1137,12 +1144,6 @@ size_t MetadataDatabaseIndexOnDisk::CountDirtyTrackerInternal() const { |
++num_dirty_trackers; |
} |
- for (itr->Seek(kDemotedDirtyIDKeyPrefix); itr->Valid(); itr->Next()) { |
- if (!StartsWithASCII(itr->key().ToString(), kDemotedDirtyIDKeyPrefix, true)) |
- break; |
- ++num_dirty_trackers; |
- } |
- |
return num_dirty_trackers; |
} |