summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorperia@chromium.org <peria@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 17:14:36 +0000
committerperia@chromium.org <peria@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 17:14:36 +0000
commit5303625ce29fda3ea2c9683ac2f28f1e6df3951e (patch)
tree61efb6279874e7d8ab388c1a4834e49541663a5e
parentc475f41490bdee2fe89dae49103f408e27e29fdc (diff)
downloadchromium_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
-rw-r--r--chrome/browser/sync_file_system/drive_backend/drive_backend_constants.cc1
-rw-r--r--chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h1
-rw-r--r--chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc31
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) {