| Index: components/sync/engine_impl/sync_scheduler_impl.cc
|
| diff --git a/components/sync/engine_impl/sync_scheduler_impl.cc b/components/sync/engine_impl/sync_scheduler_impl.cc
|
| index 4c5ebce331ecb2822cb4c6f3718f6af60dbc9d1b..c2055eb9f9a11099114bb9b9bf7cbce7a10f1a5b 100644
|
| --- a/components/sync/engine_impl/sync_scheduler_impl.cc
|
| +++ b/components/sync/engine_impl/sync_scheduler_impl.cc
|
| @@ -774,14 +774,15 @@ void SyncSchedulerImpl::OnTypesUnblocked() {
|
| void SyncSchedulerImpl::PerformDelayedNudge() {
|
| // Circumstances may have changed since we scheduled this delayed nudge.
|
| // We must check to see if it's OK to run the job before we do so.
|
| - if (CanRunNudgeJobNow(NORMAL_PRIORITY))
|
| + if (CanRunNudgeJobNow(NORMAL_PRIORITY)) {
|
| TrySyncCycleJob();
|
| -
|
| - // We're not responsible for setting up any retries here. The functions that
|
| - // first put us into a state that prevents successful sync cycles (eg. global
|
| - // throttling, type throttling, network errors, transient errors) will also
|
| - // setup the appropriate retry logic (eg. retry after timeout, exponential
|
| - // backoff, retry when the network changes).
|
| + } else {
|
| + // If we set |waiting_interal_| while this PerformDelayedNudge was pending
|
| + // callback scheduled to |retry_timer_|, it's possible we didn't re-schedule
|
| + // because this PerformDelayedNudge was going to execute sooner. If that's
|
| + // the case, we need to make sure we setup to waiting callback now.
|
| + RestartWaiting();
|
| + }
|
| }
|
|
|
| void SyncSchedulerImpl::ExponentialBackoffRetry() {
|
|
|