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

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

Issue 527163002: [SyncFS] Retry initialization of MetadataDatabase on failure of loading ServiceMetadata (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 1199a1348f6bce9c90771c5998b3273d0031a718..51899b8d7d2f0bb04915a57c7278a015054c1f3d 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
@@ -144,7 +144,7 @@ std::string GenerateDemotedDirtyIDKey(int64 tracker_id) {
return kDemotedDirtyIDKeyPrefix + base::Int64ToString(tracker_id);
}
-void RemoveUnreachableItems(LevelDBWrapper* db) {
+void RemoveUnreachableItems(LevelDBWrapper* db, int64 sync_root_tracker_id) {
DCHECK(db);
typedef std::map<int64, std::set<int64> > ChildTrackersByParent;
@@ -181,9 +181,6 @@ void RemoveUnreachableItems(LevelDBWrapper* db) {
// Traverse tracker tree from sync-root.
std::set<int64> visited_trackers;
{
- scoped_ptr<ServiceMetadata> service_metadata =
- InitializeServiceMetadata(db);
- int64 sync_root_tracker_id = service_metadata->sync_root_tracker_id();
std::vector<int64> pending;
if (sync_root_tracker_id != kInvalidTrackerID)
pending.push_back(sync_root_tracker_id);
@@ -255,10 +252,12 @@ scoped_ptr<MetadataDatabaseIndexOnDisk>
MetadataDatabaseIndexOnDisk::Create(LevelDBWrapper* db) {
DCHECK(db);
+ scoped_ptr<ServiceMetadata> service_metadata = InitializeServiceMetadata(db);
+ if (!service_metadata)
+ return scoped_ptr<MetadataDatabaseIndexOnDisk>();
+
PutVersionToDB(kDatabaseOnDiskVersion, db);
- // TODO(peria): It is not good to call RemoveUnreachableItems on every
- // creation.
- RemoveUnreachableItems(db);
+ RemoveUnreachableItems(db, service_metadata->sync_root_tracker_id());
scoped_ptr<MetadataDatabaseIndexOnDisk>
index(new MetadataDatabaseIndexOnDisk(db));

Powered by Google App Engine
This is Rietveld 408576698