diff options
author | peria@chromium.org <peria@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 17:14:36 +0000 |
---|---|---|
committer | peria@chromium.org <peria@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 17:14:36 +0000 |
commit | 5303625ce29fda3ea2c9683ac2f28f1e6df3951e (patch) | |
tree | 61efb6279874e7d8ab388c1a4834e49541663a5e | |
parent | c475f41490bdee2fe89dae49103f408e27e29fdc (diff) | |
download | chromium_src-5303625ce29fda3ea2c9683ac2f28f1e6df3951e.zip chromium_src-5303625ce29fda3ea2c9683ac2f28f1e6df3951e.tar.gz chromium_src-5303625ce29fda3ea2c9683ac2f28f1e6df3951e.tar.bz2 |
[SyncFS] Add last validate time in MDDB ver.4
BUG=347425
TEST=None
Review URL: https://codereview.chromium.org/460503004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289921 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 26 insertions, 7 deletions
diff --git a/chrome/browser/sync_file_system/drive_backend/drive_backend_constants.cc b/chrome/browser/sync_file_system/drive_backend/drive_backend_constants.cc index 867d87f..33069d3 100644 --- a/chrome/browser/sync_file_system/drive_backend/drive_backend_constants.cc +++ b/chrome/browser/sync_file_system/drive_backend/drive_backend_constants.cc @@ -20,6 +20,7 @@ const int64 kDatabaseOnDiskVersion = 4; const char kServiceMetadataKey[] = "SERVICE"; const char kFileMetadataKeyPrefix[] = "FILE: "; const char kFileTrackerKeyPrefix[] = "TRACKER: "; +const char kLastValidationTimeKey[] = "LAST_VALID"; const char kAppRootIDByAppIDKeyPrefix[] = "APP_ROOT: "; const char kActiveTrackerIDByFileIDKeyPrefix[] = "ACTIVE_FILE: "; diff --git a/chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h b/chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h index 96594ca..707ae56 100644 --- a/chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h +++ b/chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h @@ -22,6 +22,7 @@ extern const int64 kDatabaseOnDiskVersion; extern const char kServiceMetadataKey[]; extern const char kFileMetadataKeyPrefix[]; extern const char kFileTrackerKeyPrefix[]; +extern const char kLastValidationTimeKey[]; extern const char kAppRootIDByAppIDKeyPrefix[]; extern const char kActiveTrackerIDByFileIDKeyPrefix[]; 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 ae40a2b..7520ee3 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 @@ -78,6 +78,10 @@ // # Demoted dirty tracker IDs // key: "DEMOTED_DIRTY: " + <int64 'demoted_dirty_tracker_id'> // value: <empty> +// +// # Timestamp when the last validation ran +// key: "LAST_VALID" +// value: <time_t 'last_valid_time'> namespace sync_file_system { namespace drive_backend { @@ -251,9 +255,6 @@ scoped_ptr<MetadataDatabaseIndexOnDisk> MetadataDatabaseIndexOnDisk::Create(LevelDBWrapper* db) { DCHECK(db); - std::string version; - db->Get(kDatabaseVersionKey, &version); - PutVersionToDB(kDatabaseOnDiskVersion, db); // TODO(peria): It is not good to call RemoveUnreachableItems on every // creation. @@ -261,9 +262,6 @@ MetadataDatabaseIndexOnDisk::Create(LevelDBWrapper* db) { scoped_ptr<MetadataDatabaseIndexOnDisk> index(new MetadataDatabaseIndexOnDisk(db)); - if (version == "3") - index->BuildTrackerIndexes(); - return index.Pass(); } @@ -727,8 +725,27 @@ MetadataDatabaseIndexOnDisk::MetadataDatabaseIndexOnDisk(LevelDBWrapper* db) : db_(db) { // TODO(peria): Add UMA to measure the number of FileMetadata, FileTracker, // and AppRootId. - // TODO(peria): If the DB version is 3, build up index lists. service_metadata_ = InitializeServiceMetadata(db_); + + // Check if index is valid, if no validations run in 7 days. + const int64 kThresholdToValidateInDays = 7; + + int64 last_check_time = 0; + std::string value; + if (db_->Get(kLastValidationTimeKey, &value).ok()) + base::StringToInt64(value, &last_check_time); + base::TimeDelta since_last_check = + base::Time::Now() - base::Time::FromInternalValue(last_check_time); + int64 since_last_check_in_days = since_last_check.InDays(); + if (since_last_check_in_days >= kThresholdToValidateInDays || + since_last_check_in_days < 0) { + // TODO(peria): Add UMA to check if the number of deleted entries and the + // number of built entries are different or not. + DeleteTrackerIndexes(); + BuildTrackerIndexes(); + db_->Put(kLastValidationTimeKey, + base::Int64ToString(base::Time::Now().ToInternalValue())); + } } void MetadataDatabaseIndexOnDisk::AddToAppIDIndex(const FileTracker& tracker) { |