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..57c2cf292bbf228dd6d4811a259028b786d750b4 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,25 @@ 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 for more than 7 days. |
|
tzik
2014/08/15 05:22:52
for more than 7 days -> in 7 days?
peria
2014/08/15 06:17:21
Done.
|
| + const int64 kThresholdToValidate = 7; |
|
tzik
2014/08/15 05:22:52
Could you add "InDays" to the name?
peria
2014/08/15 06:17:21
Done.
|
| + |
| + time_t last_check_time = 0; |
| + std::string value; |
| + if (db_->Get(kLastValidTimeKey, &value).ok()) |
| + base::StringToInt64(value, &last_check_time); |
| + base::TimeDelta since_last_check = |
| + base::Time::Now() - base::Time::FromTimeT(last_check_time); |
| + if (since_last_check.InDays() >= kThresholdToValidate) { |
| + // 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(kLastValidTimeKey, |
| + base::Int64ToString(base::Time::Now().ToTimeT())); |
|
tzik
2014/08/15 05:22:52
Do Time::{To,From}InternalValue() work?
peria
2014/08/15 06:17:21
Done.
|
| + } |
| } |
| void MetadataDatabaseIndexOnDisk::AddToAppIDIndex(const FileTracker& tracker) { |