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

Side by Side Diff: sync/syncable/in_memory_directory_backing_store.cc

Issue 1008103002: Sync: Avoid 3 passes over SyncDarta DB when loading the directory from the disk (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed CR feedback. Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sync/syncable/in_memory_directory_backing_store.h" 5 #include "sync/syncable/in_memory_directory_backing_store.h"
6 6
7 namespace syncer { 7 namespace syncer {
8 namespace syncable { 8 namespace syncable {
9 9
10 InMemoryDirectoryBackingStore::InMemoryDirectoryBackingStore( 10 InMemoryDirectoryBackingStore::InMemoryDirectoryBackingStore(
11 const std::string& dir_name) 11 const std::string& dir_name)
12 : DirectoryBackingStore(dir_name), 12 : DirectoryBackingStore(dir_name),
13 consistent_cache_guid_requested_(false) { 13 consistent_cache_guid_requested_(false) {
14 } 14 }
15 15
16 DirOpenResult InMemoryDirectoryBackingStore::Load( 16 DirOpenResult InMemoryDirectoryBackingStore::Load(
17 Directory::MetahandlesMap* handles_map, 17 Directory::MetahandlesMap* handles_map,
18 JournalIndex* delete_journals, 18 JournalIndex* delete_journals,
19 MetahandleSet* metahandles_to_purge,
19 Directory::KernelLoadInfo* kernel_load_info) { 20 Directory::KernelLoadInfo* kernel_load_info) {
20 if (!db_->is_open()) { 21 if (!db_->is_open()) {
21 if (!db_->OpenInMemory()) 22 if (!db_->OpenInMemory())
22 return FAILED_OPEN_DATABASE; 23 return FAILED_OPEN_DATABASE;
23 } 24 }
24 25
25 if (!InitializeTables()) 26 if (!InitializeTables())
26 return FAILED_OPEN_DATABASE; 27 return FAILED_OPEN_DATABASE;
27 28
28 if (consistent_cache_guid_requested_) { 29 if (consistent_cache_guid_requested_) {
29 if (!db_->Execute("UPDATE share_info " 30 if (!db_->Execute("UPDATE share_info "
30 "SET cache_guid = 'IrcjZ2jyzHDV9Io4+zKcXQ=='")) { 31 "SET cache_guid = 'IrcjZ2jyzHDV9Io4+zKcXQ=='")) {
31 return FAILED_OPEN_DATABASE; 32 return FAILED_OPEN_DATABASE;
32 } 33 }
33 } 34 }
34 35
35 if (!DropDeletedEntries()) 36 if (!LoadEntries(handles_map, metahandles_to_purge))
36 return FAILED_DATABASE_CORRUPT;
37 if (!LoadEntries(handles_map))
38 return FAILED_DATABASE_CORRUPT; 37 return FAILED_DATABASE_CORRUPT;
39 if (!LoadDeleteJournals(delete_journals)) 38 if (!LoadDeleteJournals(delete_journals))
40 return FAILED_DATABASE_CORRUPT; 39 return FAILED_DATABASE_CORRUPT;
41 if (!LoadInfo(kernel_load_info)) 40 if (!LoadInfo(kernel_load_info))
42 return FAILED_DATABASE_CORRUPT; 41 return FAILED_DATABASE_CORRUPT;
43 if (!VerifyReferenceIntegrity(handles_map)) 42 if (!VerifyReferenceIntegrity(handles_map))
44 return FAILED_DATABASE_CORRUPT; 43 return FAILED_DATABASE_CORRUPT;
45 44
46 return OPENED; 45 return OPENED;
47 } 46 }
48 47
49 } // namespace syncable 48 } // namespace syncable
50 } // namespace syncer 49 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/syncable/in_memory_directory_backing_store.h ('k') | sync/syncable/invalid_directory_backing_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698