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

Side by Side Diff: sync/engine/sync_scheduler_impl.cc

Issue 171813013: sync: Merge GU retry logic into normal GU (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 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 | Annotate | Revision Log
« no previous file with comments | « sync/engine/sync_scheduler_impl.h ('k') | sync/engine/sync_scheduler_unittest.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 (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/engine/sync_scheduler_impl.h" 5 #include "sync/engine/sync_scheduler_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstring> 8 #include <cstring>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 Mode old_mode = mode_; 231 Mode old_mode = mode_;
232 mode_ = mode; 232 mode_ = mode;
233 AdjustPolling(UPDATE_INTERVAL); // Will kick start poll timer if needed. 233 AdjustPolling(UPDATE_INTERVAL); // Will kick start poll timer if needed.
234 234
235 if (old_mode != mode_ && mode_ == NORMAL_MODE) { 235 if (old_mode != mode_ && mode_ == NORMAL_MODE) {
236 // We just got back to normal mode. Let's try to run the work that was 236 // We just got back to normal mode. Let's try to run the work that was
237 // queued up while we were configuring. 237 // queued up while we were configuring.
238 238
239 // Update our current time before checking IsRetryRequired(). 239 // Update our current time before checking IsRetryRequired().
240 nudge_tracker_.SetSyncCycleStartTime(base::TimeTicks::Now()); 240 nudge_tracker_.SetSyncCycleStartTime(base::TimeTicks::Now());
241 if ((nudge_tracker_.IsSyncRequired() || nudge_tracker_.IsRetryRequired()) && 241 if (nudge_tracker_.IsSyncRequired() && CanRunNudgeJobNow(NORMAL_PRIORITY)) {
242 CanRunNudgeJobNow(NORMAL_PRIORITY)) {
243 TrySyncSessionJob(); 242 TrySyncSessionJob();
244 } 243 }
245 } 244 }
246 } 245 }
247 246
248 ModelTypeSet SyncSchedulerImpl::GetEnabledAndUnthrottledTypes() { 247 ModelTypeSet SyncSchedulerImpl::GetEnabledAndUnthrottledTypes() {
249 ModelTypeSet enabled_types = session_context_->enabled_types(); 248 ModelTypeSet enabled_types = session_context_->enabled_types();
250 ModelTypeSet enabled_protocol_types = 249 ModelTypeSet enabled_protocol_types =
251 Intersection(ProtocolTypes(), enabled_types); 250 Intersection(ProtocolTypes(), enabled_types);
252 ModelTypeSet throttled_types = nudge_tracker_.GetThrottledTypes(); 251 ModelTypeSet throttled_types = nudge_tracker_.GetThrottledTypes();
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 AdjustPolling(FORCE_RESET); 564 AdjustPolling(FORCE_RESET);
566 565
567 if (IsCurrentlyThrottled()) { 566 if (IsCurrentlyThrottled()) {
568 SDVLOG(2) << "Poll request got us throttled."; 567 SDVLOG(2) << "Poll request got us throttled.";
569 // The OnSilencedUntil() call set up the WaitInterval for us. All we need 568 // The OnSilencedUntil() call set up the WaitInterval for us. All we need
570 // to do is start the timer. 569 // to do is start the timer.
571 RestartWaiting(); 570 RestartWaiting();
572 } 571 }
573 } 572 }
574 573
575 void SyncSchedulerImpl::DoRetrySyncSessionJob() {
576 DCHECK(CalledOnValidThread());
577 DCHECK_EQ(mode_, NORMAL_MODE);
578
579 base::AutoReset<bool> protector(&no_scheduling_allowed_, true);
580
581 SDVLOG(2) << "Retrying with types "
582 << ModelTypeSetToString(GetEnabledAndUnthrottledTypes());
583 scoped_ptr<SyncSession> session(SyncSession::Build(session_context_, this));
584 if (syncer_->RetrySyncShare(GetEnabledAndUnthrottledTypes(),
585 session.get()) &&
586 !sessions::HasSyncerError(
587 session->status_controller().model_neutral_state())) {
588 nudge_tracker_.RecordSuccessfulSyncCycle();
589 } else {
590 HandleFailure(session->status_controller().model_neutral_state());
591 }
592 }
593
594 void SyncSchedulerImpl::UpdateNudgeTimeRecords(ModelTypeSet types) { 574 void SyncSchedulerImpl::UpdateNudgeTimeRecords(ModelTypeSet types) {
595 DCHECK(CalledOnValidThread()); 575 DCHECK(CalledOnValidThread());
596 base::TimeTicks now = TimeTicks::Now(); 576 base::TimeTicks now = TimeTicks::Now();
597 // Update timing information for how often datatypes are triggering nudges. 577 // Update timing information for how often datatypes are triggering nudges.
598 for (ModelTypeSet::Iterator iter = types.First(); iter.Good(); iter.Inc()) { 578 for (ModelTypeSet::Iterator iter = types.First(); iter.Good(); iter.Inc()) {
599 base::TimeTicks previous = last_local_nudges_by_model_type_[iter.Get()]; 579 base::TimeTicks previous = last_local_nudges_by_model_type_[iter.Get()];
600 last_local_nudges_by_model_type_[iter.Get()] = now; 580 last_local_nudges_by_model_type_[iter.Get()] = now;
601 if (previous.is_null()) 581 if (previous.is_null())
602 continue; 582 continue;
603 583
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 DCHECK(CalledOnValidThread()); 677 DCHECK(CalledOnValidThread());
698 if (mode_ == CONFIGURATION_MODE) { 678 if (mode_ == CONFIGURATION_MODE) {
699 if (pending_configure_params_) { 679 if (pending_configure_params_) {
700 SDVLOG(2) << "Found pending configure job"; 680 SDVLOG(2) << "Found pending configure job";
701 DoConfigurationSyncSessionJob(priority); 681 DoConfigurationSyncSessionJob(priority);
702 } 682 }
703 } else if (CanRunNudgeJobNow(priority)) { 683 } else if (CanRunNudgeJobNow(priority)) {
704 if (nudge_tracker_.IsSyncRequired()) { 684 if (nudge_tracker_.IsSyncRequired()) {
705 SDVLOG(2) << "Found pending nudge job"; 685 SDVLOG(2) << "Found pending nudge job";
706 DoNudgeSyncSessionJob(priority); 686 DoNudgeSyncSessionJob(priority);
707 } else if (nudge_tracker_.IsRetryRequired()) {
708 DoRetrySyncSessionJob();
709 } else if (do_poll_after_credentials_updated_ || 687 } else if (do_poll_after_credentials_updated_ ||
710 ((base::TimeTicks::Now() - last_poll_reset_) >= GetPollInterval())) { 688 ((base::TimeTicks::Now() - last_poll_reset_) >= GetPollInterval())) {
711 DoPollSyncSessionJob(); 689 DoPollSyncSessionJob();
712 // Poll timer fires infrequently. Usually by this time access token is 690 // Poll timer fires infrequently. Usually by this time access token is
713 // already expired and poll job will fail with auth error. Set flag to 691 // already expired and poll job will fail with auth error. Set flag to
714 // retry poll once ProfileSyncService gets new access token, TryCanaryJob 692 // retry poll once ProfileSyncService gets new access token, TryCanaryJob
715 // will be called after access token is retrieved. 693 // will be called after access token is retrieved.
716 if (HttpResponse::SYNC_AUTH_ERROR == 694 if (HttpResponse::SYNC_AUTH_ERROR ==
717 session_context_->connection_manager()->server_status()) { 695 session_context_->connection_manager()->server_status()) {
718 do_poll_after_credentials_updated_ = true; 696 do_poll_after_credentials_updated_ = true;
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 908
931 #undef SDVLOG_LOC 909 #undef SDVLOG_LOC
932 910
933 #undef SDVLOG 911 #undef SDVLOG
934 912
935 #undef SLOG 913 #undef SLOG
936 914
937 #undef ENUM_CASE 915 #undef ENUM_CASE
938 916
939 } // namespace syncer 917 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/engine/sync_scheduler_impl.h ('k') | sync/engine/sync_scheduler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698