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

Side by Side Diff: sync/syncable/mutable_entry.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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/mutable_entry.h" 5 #include "sync/syncable/mutable_entry.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "sync/internal_api/public/base/unique_position.h" 8 #include "sync/internal_api/public/base/unique_position.h"
9 #include "sync/syncable/directory.h" 9 #include "sync/syncable/directory.h"
10 #include "sync/syncable/scoped_kernel_lock.h" 10 #include "sync/syncable/scoped_kernel_lock.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 write_transaction()->TrackChangesTo(kernel_); 177 write_transaction()->TrackChangesTo(kernel_);
178 if (value == kernel_->ref(IS_DEL)) { 178 if (value == kernel_->ref(IS_DEL)) {
179 return; 179 return;
180 } 180 }
181 if (value) { 181 if (value) {
182 // If the server never knew about this item and it's deleted then we don't 182 // If the server never knew about this item and it's deleted then we don't
183 // need to keep it around. Unsetting IS_UNSYNCED will: 183 // need to keep it around. Unsetting IS_UNSYNCED will:
184 // - Ensure that the item is never committed to the server. 184 // - Ensure that the item is never committed to the server.
185 // - Allow any items with the same UNIQUE_CLIENT_TAG created on other 185 // - Allow any items with the same UNIQUE_CLIENT_TAG created on other
186 // clients to override this entry. 186 // clients to override this entry.
187 // - Let us delete this entry permanently through 187 // - Let us delete this entry permanently when we next restart sync - see
188 // DirectoryBackingStore::DropDeletedEntries() when we next restart sync. 188 // DirectoryBackingStore::SafeToPurgeOnLoading.
189 // This will save memory and avoid crbug.com/125381. 189 // This will avoid crbug.com/125381.
190 // Note: do not unset IsUnsynced if the syncer is in the middle of 190 // Note: do not unset IsUnsynced if the syncer is in the middle of
191 // attempting to commit this entity. 191 // attempting to commit this entity.
192 if (!GetId().ServerKnows() && !GetSyncing()) { 192 if (!GetId().ServerKnows() && !GetSyncing()) {
193 PutIsUnsynced(false); 193 PutIsUnsynced(false);
194 } 194 }
195 } 195 }
196 196
197 { 197 {
198 ScopedKernelLock lock(dir()); 198 ScopedKernelLock lock(dir());
199 // Some indices don't include deleted items and must be updated 199 // Some indices don't include deleted items and must be updated
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 DCHECK_NE(static_cast<MutableEntry*>(NULL), e); 292 DCHECK_NE(static_cast<MutableEntry*>(NULL), e);
293 DCHECK(!e->IsRoot()) << "We shouldn't mark a permanent object for syncing."; 293 DCHECK(!e->IsRoot()) << "We shouldn't mark a permanent object for syncing.";
294 if (!(e->PutIsUnsynced(true))) 294 if (!(e->PutIsUnsynced(true)))
295 return false; 295 return false;
296 e->PutSyncing(false); 296 e->PutSyncing(false);
297 return true; 297 return true;
298 } 298 }
299 299
300 } // namespace syncable 300 } // namespace syncable
301 } // namespace syncer 301 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/syncable/invalid_directory_backing_store.cc ('k') | sync/syncable/on_disk_directory_backing_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698