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

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

Issue 283143002: sync: Improve handling of bad UniquePos (retry) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « sync/sync_tests.gypi ('k') | sync/syncable/directory_backing_store.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/directory.h" 5 #include "sync/syncable/directory.h"
6 6
7 #include <iterator> 7 #include <iterator>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 160
161 DirOpenResult Directory::OpenImpl( 161 DirOpenResult Directory::OpenImpl(
162 const string& name, 162 const string& name,
163 DirectoryChangeDelegate* delegate, 163 DirectoryChangeDelegate* delegate,
164 const WeakHandle<TransactionObserver>& 164 const WeakHandle<TransactionObserver>&
165 transaction_observer) { 165 transaction_observer) {
166 KernelLoadInfo info; 166 KernelLoadInfo info;
167 // Temporary indices before kernel_ initialized in case Load fails. We 0(1) 167 // Temporary indices before kernel_ initialized in case Load fails. We 0(1)
168 // swap these later. 168 // swap these later.
169 Directory::MetahandlesMap tmp_handles_map; 169 Directory::MetahandlesMap tmp_handles_map;
170
171 // Avoids mem leaks on failure. Harmlessly deletes the empty hash map after
172 // the swap in the success case.
173 STLValueDeleter<Directory::MetahandlesMap> deleter(&tmp_handles_map);
174
170 JournalIndex delete_journals; 175 JournalIndex delete_journals;
171 176
172 DirOpenResult result = 177 DirOpenResult result =
173 store_->Load(&tmp_handles_map, &delete_journals, &info); 178 store_->Load(&tmp_handles_map, &delete_journals, &info);
174 if (OPENED != result) 179 if (OPENED != result)
175 return result; 180 return result;
176 181
177 kernel_ = new Kernel(name, info, delegate, transaction_observer); 182 kernel_ = new Kernel(name, info, delegate, transaction_observer);
178 delete_journal_.reset(new DeleteJournal(&delete_journals)); 183 delete_journal_.reset(new DeleteJournal(&delete_journals));
179 InitializeIndices(&tmp_handles_map); 184 InitializeIndices(&tmp_handles_map);
(...skipping 1242 matching lines...) Expand 10 before | Expand all | Expand 10 after
1422 1427
1423 for (OrderedChildSet::const_iterator i = children->begin(); 1428 for (OrderedChildSet::const_iterator i = children->begin();
1424 i != children->end(); ++i) { 1429 i != children->end(); ++i) {
1425 DCHECK_EQ(parent_id, (*i)->ref(PARENT_ID)); 1430 DCHECK_EQ(parent_id, (*i)->ref(PARENT_ID));
1426 result->push_back((*i)->ref(META_HANDLE)); 1431 result->push_back((*i)->ref(META_HANDLE));
1427 } 1432 }
1428 } 1433 }
1429 1434
1430 } // namespace syncable 1435 } // namespace syncable
1431 } // namespace syncer 1436 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/sync_tests.gypi ('k') | sync/syncable/directory_backing_store.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698