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

Side by Side Diff: chrome/browser/sync/profile_sync_service.cc

Issue 10821121: sync: Attempt to recover from directory corruption (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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
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 "chrome/browser/sync/profile_sync_service.h" 5 #include "chrome/browser/sync/profile_sync_service.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 // In platforms with auto start we would just wait for the 378 // In platforms with auto start we would just wait for the
379 // configure to finish. In other platforms we would throw 379 // configure to finish. In other platforms we would throw
380 // an unrecoverable error. The reason we do this is so that 380 // an unrecoverable error. The reason we do this is so that
381 // the login dialog would show an error and the user would have 381 // the login dialog would show an error and the user would have
382 // to relogin. 382 // to relogin.
383 // Also if backend has been initialized(the user is authenticated 383 // Also if backend has been initialized(the user is authenticated
384 // and nigori is downloaded) we would simply wait rather than going into 384 // and nigori is downloaded) we would simply wait rather than going into
385 // unrecoverable error, even if the platform has auto start disabled. 385 // unrecoverable error, even if the platform has auto start disabled.
386 // Note: In those scenarios the UI does not wait for the configuration 386 // Note: In those scenarios the UI does not wait for the configuration
387 // to finish. 387 // to finish.
388 //
389 // TODO(rlarocque): Consider making this UnrecoverableError less special.
390 // This exception made sense at the time it was implemented, but our new
391 // directory corruption recovery mechanism makes it obsolete. By the time we
392 // get here, we will have already tried and failed to delete the directory.
393 // Whether or not we try to delete it again after the error is thrown likely
394 // won't make a difference.
tim (not reviewing) 2012/08/01 21:31:59 Hmm... I don't follow. I thought this was called
rlarocque 2012/08/01 21:53:50 Woops, that was a dumb mistake. This comment belo
388 if (!auto_start_enabled_ && !backend_initialized_) { 395 if (!auto_start_enabled_ && !backend_initialized_) {
389 OnInternalUnrecoverableError(FROM_HERE, 396 OnInternalUnrecoverableError(FROM_HERE,
390 "Configure failed to download.", 397 "Configure failed to download.",
391 true, 398 true,
392 ERROR_REASON_CONFIGURATION_RETRY); 399 ERROR_REASON_CONFIGURATION_RETRY);
393 } 400 }
394 401
395 NotifyObservers(); 402 NotifyObservers();
396 } 403 }
397 404
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 640
634 MessageLoop::current()->PostTask(FROM_HERE, 641 MessageLoop::current()->PostTask(FROM_HERE,
635 base::Bind(&ProfileSyncService::ReconfigureDatatypeManager, 642 base::Bind(&ProfileSyncService::ReconfigureDatatypeManager,
636 weak_factory_.GetWeakPtr())); 643 weak_factory_.GetWeakPtr()));
637 } 644 }
638 645
639 void ProfileSyncService::OnBackendInitialized( 646 void ProfileSyncService::OnBackendInitialized(
640 const syncer::WeakHandle<syncer::JsBackend>& js_backend, bool success) { 647 const syncer::WeakHandle<syncer::JsBackend>& js_backend, bool success) {
641 is_first_time_sync_configure_ = !HasSyncSetupCompleted(); 648 is_first_time_sync_configure_ = !HasSyncSetupCompleted();
642 649
643 if (is_first_time_sync_configure_) { 650 if (is_first_time_sync_configure_) {
rlarocque 2012/08/01 00:25:10 I'm considering removing these UMAs. They were us
644 UMA_HISTOGRAM_BOOLEAN("Sync.BackendInitializeFirstTimeSuccess", success); 651 UMA_HISTOGRAM_BOOLEAN("Sync.BackendInitializeFirstTimeSuccess", success);
645 } else { 652 } else {
646 UMA_HISTOGRAM_BOOLEAN("Sync.BackendInitializeRestoreSuccess", success); 653 UMA_HISTOGRAM_BOOLEAN("Sync.BackendInitializeRestoreSuccess", success);
647 } 654 }
648 655
649 if (!start_up_time_.is_null()) { 656 if (!start_up_time_.is_null()) {
650 base::Time on_backend_initialized_time = base::Time::Now(); 657 base::Time on_backend_initialized_time = base::Time::Now();
651 base::TimeDelta delta = on_backend_initialized_time - start_up_time_; 658 base::TimeDelta delta = on_backend_initialized_time - start_up_time_;
652 if (is_first_time_sync_configure_) { 659 if (is_first_time_sync_configure_) {
653 UMA_HISTOGRAM_LONG_TIMES("Sync.BackendInitializeFirstTime", delta); 660 UMA_HISTOGRAM_LONG_TIMES("Sync.BackendInitializeFirstTime", delta);
(...skipping 1101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1755 // See http://stackoverflow.com/questions/6224121/is-new-this-myclass-undefine d-behaviour-after-directly-calling-the-destru. 1762 // See http://stackoverflow.com/questions/6224121/is-new-this-myclass-undefine d-behaviour-after-directly-calling-the-destru.
1756 ProfileSyncService* old_this = this; 1763 ProfileSyncService* old_this = this;
1757 this->~ProfileSyncService(); 1764 this->~ProfileSyncService();
1758 new(old_this) ProfileSyncService( 1765 new(old_this) ProfileSyncService(
1759 new ProfileSyncComponentsFactoryImpl(profile, 1766 new ProfileSyncComponentsFactoryImpl(profile,
1760 CommandLine::ForCurrentProcess()), 1767 CommandLine::ForCurrentProcess()),
1761 profile, 1768 profile,
1762 signin, 1769 signin,
1763 behavior); 1770 behavior);
1764 } 1771 }
OLDNEW
« no previous file with comments | « no previous file | sync/syncable/directory.cc » ('j') | sync/syncable/on_disk_directory_backing_store.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698