Chromium Code Reviews| 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 ae40a2b7f78c95b5336462506afa54b217fa3fcf..7520ee3d8f768ebc8450284e38a1a356e3dd73b0 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'> |
|
nhiroki
2014/08/15 11:03:15
I guess this should be int64 value and you may wan
|
| 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) { |