Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3080)

Unified Diff: chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc

Issue 537883002: [SyncFS] Fix unexpected delay on running sync task (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@peria
Patch Set: fix test expectation Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698