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

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

Issue 12317104: Remove canary member from SyncSessionJob (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 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_whitebox_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 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 // execute in the new mode. 273 // execute in the new mode.
274 if (mode_ == NORMAL_MODE) { 274 if (mode_ == NORMAL_MODE) {
275 // It is illegal to switch to NORMAL_MODE if a previous CONFIGURATION job 275 // It is illegal to switch to NORMAL_MODE if a previous CONFIGURATION job
276 // has not yet completed. 276 // has not yet completed.
277 DCHECK(!wait_interval_.get() || !wait_interval_->pending_configure_job); 277 DCHECK(!wait_interval_.get() || !wait_interval_->pending_configure_job);
278 } 278 }
279 279
280 scoped_ptr<SyncSessionJob> pending(TakePendingJobForCurrentMode()); 280 scoped_ptr<SyncSessionJob> pending(TakePendingJobForCurrentMode());
281 if (pending.get()) { 281 if (pending.get()) {
282 SDVLOG(2) << "Executing pending job. Good luck!"; 282 SDVLOG(2) << "Executing pending job. Good luck!";
283 DoSyncSessionJob(pending.Pass()); 283 DoSyncSessionJob(pending.Pass(), false);
284 } 284 }
285 } 285 }
286 } 286 }
287 287
288 void SyncSchedulerImpl::SendInitialSnapshot() { 288 void SyncSchedulerImpl::SendInitialSnapshot() {
289 DCHECK_EQ(MessageLoop::current(), sync_loop_); 289 DCHECK_EQ(MessageLoop::current(), sync_loop_);
290 scoped_ptr<SyncSession> dummy(new SyncSession( 290 scoped_ptr<SyncSession> dummy(new SyncSession(
291 session_context_, this, SyncSourceInfo())); 291 session_context_, this, SyncSourceInfo()));
292 SyncEngineEvent event(SyncEngineEvent::STATUS_CHANGED); 292 SyncEngineEvent event(SyncEngineEvent::STATUS_CHANGED);
293 event.snapshot = dummy->TakeSnapshot(); 293 event.snapshot = dummy->TakeSnapshot();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 ModelSafeRoutingInfoToInvalidationMap( 343 ModelSafeRoutingInfoToInvalidationMap(
344 restricted_routes, 344 restricted_routes,
345 std::string())))); 345 std::string()))));
346 scoped_ptr<SyncSessionJob> job(new SyncSessionJob( 346 scoped_ptr<SyncSessionJob> job(new SyncSessionJob(
347 SyncSessionJob::CONFIGURATION, 347 SyncSessionJob::CONFIGURATION,
348 TimeTicks::Now(), 348 TimeTicks::Now(),
349 session.Pass(), 349 session.Pass(),
350 params, 350 params,
351 FROM_HERE)); 351 FROM_HERE));
352 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr()); 352 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr());
353 bool succeeded = DoSyncSessionJob(job.Pass()); 353 bool succeeded = DoSyncSessionJob(job.Pass(), false);
354 354
355 // If we failed, the job would have been saved as the pending configure 355 // If we failed, the job would have been saved as the pending configure
356 // job and a wait interval would have been set. 356 // job and a wait interval would have been set.
357 if (!succeeded) { 357 if (!succeeded) {
358 DCHECK(wait_interval_.get() && wait_interval_->pending_configure_job); 358 DCHECK(wait_interval_.get() && wait_interval_->pending_configure_job);
359 return false; 359 return false;
360 } 360 }
361 } else { 361 } else {
362 SDVLOG(2) << "No change in routing info, calling ready task directly."; 362 SDVLOG(2) << "No change in routing info, calling ready task directly.";
363 params.ready_task.Run(); 363 params.ready_task.Run();
364 } 364 }
365 365
366 return true; 366 return true;
367 } 367 }
368 368
369 SyncSchedulerImpl::JobProcessDecision 369 SyncSchedulerImpl::JobProcessDecision
370 SyncSchedulerImpl::DecideWhileInWaitInterval(const SyncSessionJob& job) { 370 SyncSchedulerImpl::DecideWhileInWaitInterval(const SyncSessionJob& job,
371 bool is_canary) {
371 DCHECK_EQ(MessageLoop::current(), sync_loop_); 372 DCHECK_EQ(MessageLoop::current(), sync_loop_);
372 DCHECK(wait_interval_.get()); 373 DCHECK(wait_interval_.get());
373 374
374 SDVLOG(2) << "DecideWhileInWaitInterval with WaitInterval mode " 375 SDVLOG(2) << "DecideWhileInWaitInterval with WaitInterval mode "
375 << WaitInterval::GetModeString(wait_interval_->mode) 376 << WaitInterval::GetModeString(wait_interval_->mode)
376 << (wait_interval_->had_nudge ? " (had nudge)" : "") 377 << (wait_interval_->had_nudge ? " (had nudge)" : "")
377 << (job.is_canary() ? " (canary)" : ""); 378 << (is_canary ? " (canary)" : "");
378 379
379 if (job.purpose() == SyncSessionJob::POLL) 380 if (job.purpose() == SyncSessionJob::POLL)
380 return DROP; 381 return DROP;
381 382
382 // If we save a job while in a WaitInterval, there is a well-defined moment 383 // If we save a job while in a WaitInterval, there is a well-defined moment
383 // in time in the future when it makes sense for that SAVE-worthy job to try 384 // in time in the future when it makes sense for that SAVE-worthy job to try
384 // running again -- the end of the WaitInterval. 385 // running again -- the end of the WaitInterval.
385 DCHECK(job.purpose() == SyncSessionJob::NUDGE || 386 DCHECK(job.purpose() == SyncSessionJob::NUDGE ||
386 job.purpose() == SyncSessionJob::CONFIGURATION); 387 job.purpose() == SyncSessionJob::CONFIGURATION);
387 388
388 // If throttled, there's a clock ticking to unthrottle. We want to get 389 // If throttled, there's a clock ticking to unthrottle. We want to get
389 // on the same train. 390 // on the same train.
390 if (wait_interval_->mode == WaitInterval::THROTTLED) 391 if (wait_interval_->mode == WaitInterval::THROTTLED)
391 return SAVE; 392 return SAVE;
392 393
393 DCHECK_EQ(wait_interval_->mode, WaitInterval::EXPONENTIAL_BACKOFF); 394 DCHECK_EQ(wait_interval_->mode, WaitInterval::EXPONENTIAL_BACKOFF);
394 if (job.purpose() == SyncSessionJob::NUDGE) { 395 if (job.purpose() == SyncSessionJob::NUDGE) {
395 if (mode_ == CONFIGURATION_MODE) 396 if (mode_ == CONFIGURATION_MODE)
396 return SAVE; 397 return SAVE;
397 398
398 // If we already had one nudge then just drop this nudge. We will retry 399 // If we already had one nudge then just drop this nudge. We will retry
399 // later when the timer runs out. 400 // later when the timer runs out.
400 if (!job.is_canary()) 401 if (!is_canary)
401 return wait_interval_->had_nudge ? DROP : CONTINUE; 402 return wait_interval_->had_nudge ? DROP : CONTINUE;
402 else // We are here because timer ran out. So retry. 403 else // We are here because timer ran out. So retry.
403 return CONTINUE; 404 return CONTINUE;
404 } 405 }
405 return job.is_canary() ? CONTINUE : SAVE; 406 return is_canary ? CONTINUE : SAVE;
406 } 407 }
407 408
408 SyncSchedulerImpl::JobProcessDecision SyncSchedulerImpl::DecideOnJob( 409 SyncSchedulerImpl::JobProcessDecision SyncSchedulerImpl::DecideOnJob(
409 const SyncSessionJob& job) { 410 const SyncSessionJob& job,
411 bool is_canary) {
410 DCHECK_EQ(MessageLoop::current(), sync_loop_); 412 DCHECK_EQ(MessageLoop::current(), sync_loop_);
411 413
412 // See if our type is throttled. 414 // See if our type is throttled.
413 ModelTypeSet throttled_types = 415 ModelTypeSet throttled_types =
414 session_context_->throttled_data_type_tracker()->GetThrottledTypes(); 416 session_context_->throttled_data_type_tracker()->GetThrottledTypes();
415 if (job.purpose() == SyncSessionJob::NUDGE && 417 if (job.purpose() == SyncSessionJob::NUDGE &&
416 job.session()->source().updates_source == GetUpdatesCallerInfo::LOCAL) { 418 job.session()->source().updates_source == GetUpdatesCallerInfo::LOCAL) {
417 ModelTypeSet requested_types; 419 ModelTypeSet requested_types;
418 for (ModelTypeInvalidationMap::const_iterator i = 420 for (ModelTypeInvalidationMap::const_iterator i =
419 job.session()->source().types.begin(); 421 job.session()->source().types.begin();
420 i != job.session()->source().types.end(); 422 i != job.session()->source().types.end();
421 ++i) { 423 ++i) {
422 requested_types.Put(i->first); 424 requested_types.Put(i->first);
423 } 425 }
424 426
425 // If all types are throttled, do not CONTINUE. Today, we don't treat 427 // If all types are throttled, do not CONTINUE. Today, we don't treat
426 // a per-datatype "unthrottle" event as something that should force a 428 // a per-datatype "unthrottle" event as something that should force a
427 // canary job. For this reason, there's no good time to reschedule this job 429 // canary job. For this reason, there's no good time to reschedule this job
428 // to run -- we'll lazily wait for an independent event to trigger a sync. 430 // to run -- we'll lazily wait for an independent event to trigger a sync.
429 // Note that there may already be such an event if we're in a WaitInterval, 431 // Note that there may already be such an event if we're in a WaitInterval,
430 // so we can retry it then. 432 // so we can retry it then.
431 if (!requested_types.Empty() && throttled_types.HasAll(requested_types)) 433 if (!requested_types.Empty() && throttled_types.HasAll(requested_types))
432 return SAVE; 434 return SAVE;
433 } 435 }
434 436
435 if (wait_interval_.get()) 437 if (wait_interval_.get())
436 return DecideWhileInWaitInterval(job); 438 return DecideWhileInWaitInterval(job, is_canary);
437 439
438 if (mode_ == CONFIGURATION_MODE) { 440 if (mode_ == CONFIGURATION_MODE) {
439 if (job.purpose() == SyncSessionJob::NUDGE) 441 if (job.purpose() == SyncSessionJob::NUDGE)
440 return SAVE; // Running requires a mode switch. 442 return SAVE; // Running requires a mode switch.
441 else if (job.purpose() == SyncSessionJob::CONFIGURATION) 443 else if (job.purpose() == SyncSessionJob::CONFIGURATION)
442 return CONTINUE; 444 return CONTINUE;
443 else 445 else
444 return DROP; 446 return DROP;
445 } 447 }
446 448
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 if (!session_context_->connection_manager()->HasInvalidAuthToken()) 490 if (!session_context_->connection_manager()->HasInvalidAuthToken())
489 return CONTINUE; 491 return CONTINUE;
490 492
491 SDVLOG(2) << "No valid auth token. Using that to decide on job."; 493 SDVLOG(2) << "No valid auth token. Using that to decide on job.";
492 // Running the job would require updated auth, so we can't honour 494 // Running the job would require updated auth, so we can't honour
493 // job.scheduled_start(). 495 // job.scheduled_start().
494 return job.purpose() == SyncSessionJob::NUDGE ? SAVE : DROP; 496 return job.purpose() == SyncSessionJob::NUDGE ? SAVE : DROP;
495 } 497 }
496 498
497 void SyncSchedulerImpl::HandleSaveJobDecision(scoped_ptr<SyncSessionJob> job) { 499 void SyncSchedulerImpl::HandleSaveJobDecision(scoped_ptr<SyncSessionJob> job) {
498 DCHECK_EQ(DecideOnJob(*job), SAVE);
499 const bool is_nudge = job->purpose() == SyncSessionJob::NUDGE; 500 const bool is_nudge = job->purpose() == SyncSessionJob::NUDGE;
500 if (is_nudge && pending_nudge_) { 501 if (is_nudge && pending_nudge_) {
501 SDVLOG(2) << "Coalescing a pending nudge"; 502 SDVLOG(2) << "Coalescing a pending nudge";
502 // TODO(tim): This basically means we never use the more-careful coalescing 503 // TODO(tim): This basically means we never use the more-careful coalescing
503 // logic in ScheduleNudgeImpl that takes the min of the two nudge start 504 // logic in ScheduleNudgeImpl that takes the min of the two nudge start
504 // times, because we're calling this function first. Pull this out 505 // times, because we're calling this function first. Pull this out
505 // into a function to coalesce + set start times and reuse. 506 // into a function to coalesce + set start times and reuse.
506 pending_nudge_->mutable_session()->CoalesceSources( 507 pending_nudge_->mutable_session()->CoalesceSources(
507 job->session()->source()); 508 job->session()->source());
508 return; 509 return;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 SyncSourceInfo info(source, invalidation_map); 616 SyncSourceInfo info(source, invalidation_map);
616 UpdateNudgeTimeRecords(info); 617 UpdateNudgeTimeRecords(info);
617 618
618 scoped_ptr<SyncSessionJob> job(new SyncSessionJob( 619 scoped_ptr<SyncSessionJob> job(new SyncSessionJob(
619 SyncSessionJob::NUDGE, 620 SyncSessionJob::NUDGE,
620 TimeTicks::Now() + delay, 621 TimeTicks::Now() + delay,
621 CreateSyncSession(info).Pass(), 622 CreateSyncSession(info).Pass(),
622 ConfigurationParams(), 623 ConfigurationParams(),
623 nudge_location)); 624 nudge_location));
624 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr()); 625 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr());
625 JobProcessDecision decision = DecideOnJob(*job); 626 JobProcessDecision decision = DecideOnJob(*job, false);
626 SDVLOG(2) << "Should run " 627 SDVLOG(2) << "Should run "
627 << SyncSessionJob::GetPurposeString(job->purpose()) 628 << SyncSessionJob::GetPurposeString(job->purpose())
628 << " job " << job->session() 629 << " job " << job->session()
629 << " in mode " << GetModeString(mode_) 630 << " in mode " << GetModeString(mode_)
630 << ": " << GetDecisionString(decision); 631 << ": " << GetDecisionString(decision);
631 if (decision != CONTINUE) { 632 if (decision != CONTINUE) {
632 // End of the line, though we may save the job for later. 633 // End of the line, though we may save the job for later.
633 if (decision == SAVE) { 634 if (decision == SAVE) {
634 HandleSaveJobDecision(job.Pass()); 635 HandleSaveJobDecision(job.Pass());
635 } else { 636 } else {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 if (job->purpose() == SyncSessionJob::NUDGE) { 731 if (job->purpose() == SyncSessionJob::NUDGE) {
731 SDVLOG_LOC(loc, 2) << "Resetting pending_nudge to "; 732 SDVLOG_LOC(loc, 2) << "Resetting pending_nudge to ";
732 DCHECK(!pending_nudge_ || pending_nudge_->session() == 733 DCHECK(!pending_nudge_ || pending_nudge_->session() ==
733 job->session()); 734 job->session());
734 set_pending_nudge(job.get()); 735 set_pending_nudge(job.get());
735 } 736 }
736 737
737 PostDelayedTask(loc, "DoSyncSessionJob", 738 PostDelayedTask(loc, "DoSyncSessionJob",
738 base::Bind(base::IgnoreResult(&SyncSchedulerImpl::DoSyncSessionJob), 739 base::Bind(base::IgnoreResult(&SyncSchedulerImpl::DoSyncSessionJob),
739 weak_ptr_factory_.GetWeakPtr(), 740 weak_ptr_factory_.GetWeakPtr(),
740 base::Passed(&job)), 741 base::Passed(&job),
742 false),
741 delay); 743 delay);
742 } 744 }
743 745
744 bool SyncSchedulerImpl::DoSyncSessionJob(scoped_ptr<SyncSessionJob> job) { 746 bool SyncSchedulerImpl::DoSyncSessionJob(scoped_ptr<SyncSessionJob> job,
747 bool is_canary) {
745 DCHECK_EQ(MessageLoop::current(), sync_loop_); 748 DCHECK_EQ(MessageLoop::current(), sync_loop_);
746 if (job->purpose() == SyncSessionJob::NUDGE) { 749 if (job->purpose() == SyncSessionJob::NUDGE) {
747 if (pending_nudge_ == NULL || 750 if (pending_nudge_ == NULL ||
748 pending_nudge_->session() != job->session()) { 751 pending_nudge_->session() != job->session()) {
749 // |job| is abandoned. 752 // |job| is abandoned.
750 SDVLOG(2) << "Dropping a nudge in " 753 SDVLOG(2) << "Dropping a nudge in "
751 << "DoSyncSessionJob because another nudge was scheduled"; 754 << "DoSyncSessionJob because another nudge was scheduled";
752 return false; 755 return false;
753 } 756 }
754 pending_nudge_ = NULL; 757 pending_nudge_ = NULL;
755 } 758 }
756 759
757 base::AutoReset<bool> protector(&no_scheduling_allowed_, true); 760 base::AutoReset<bool> protector(&no_scheduling_allowed_, true);
758 JobProcessDecision decision = DecideOnJob(*job); 761 JobProcessDecision decision = DecideOnJob(*job, is_canary);
759 SDVLOG(2) << "Should run " 762 SDVLOG(2) << "Should run "
760 << SyncSessionJob::GetPurposeString(job->purpose()) 763 << SyncSessionJob::GetPurposeString(job->purpose())
761 << " job " << job->session() 764 << " job " << job->session()
762 << " in mode " << GetModeString(mode_) 765 << " in mode " << GetModeString(mode_)
763 << " with source " << job->session()->source().updates_source 766 << " with source " << job->session()->source().updates_source
764 << ": " << GetDecisionString(decision); 767 << ": " << GetDecisionString(decision);
765 if (decision != CONTINUE) { 768 if (decision != CONTINUE) {
766 if (decision == SAVE) { 769 if (decision == SAVE) {
767 HandleSaveJobDecision(job.Pass()); 770 HandleSaveJobDecision(job.Pass());
768 } else { 771 } else {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 wait_interval_->timer.Start(FROM_HERE, wait_interval_->length, 943 wait_interval_->timer.Start(FROM_HERE, wait_interval_->length,
941 base::Bind(&SyncSchedulerImpl::DoCanaryJob, 944 base::Bind(&SyncSchedulerImpl::DoCanaryJob,
942 weak_ptr_factory_.GetWeakPtr(), 945 weak_ptr_factory_.GetWeakPtr(),
943 base::Passed(&job))); 946 base::Passed(&job)));
944 } 947 }
945 } 948 }
946 949
947 void SyncSchedulerImpl::HandleContinuationError( 950 void SyncSchedulerImpl::HandleContinuationError(
948 scoped_ptr<SyncSessionJob> old_job) { 951 scoped_ptr<SyncSessionJob> old_job) {
949 DCHECK_EQ(MessageLoop::current(), sync_loop_); 952 DCHECK_EQ(MessageLoop::current(), sync_loop_);
950 if (DCHECK_IS_ON()) {
951 if (IsBackingOff()) {
952 DCHECK(wait_interval_->timer.IsRunning() || old_job->is_canary());
953 }
954 }
955 953
956 TimeDelta length = delay_provider_->GetDelay( 954 TimeDelta length = delay_provider_->GetDelay(
957 IsBackingOff() ? wait_interval_->length : 955 IsBackingOff() ? wait_interval_->length :
958 delay_provider_->GetInitialDelay( 956 delay_provider_->GetInitialDelay(
959 old_job->session()->status_controller().model_neutral_state())); 957 old_job->session()->status_controller().model_neutral_state()));
960 958
961 SDVLOG(2) << "In handle continuation error with " 959 SDVLOG(2) << "In handle continuation error with "
962 << SyncSessionJob::GetPurposeString(old_job->purpose()) 960 << SyncSessionJob::GetPurposeString(old_job->purpose())
963 << " job. The time delta(ms) is " 961 << " job. The time delta(ms) is "
964 << length.InMilliseconds(); 962 << length.InMilliseconds();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1009 started_ = false; 1007 started_ = false;
1010 } 1008 }
1011 if (!callback.is_null()) 1009 if (!callback.is_null())
1012 callback.Run(); 1010 callback.Run();
1013 } 1011 }
1014 1012
1015 void SyncSchedulerImpl::DoCanaryJob(scoped_ptr<SyncSessionJob> to_be_canary) { 1013 void SyncSchedulerImpl::DoCanaryJob(scoped_ptr<SyncSessionJob> to_be_canary) {
1016 DCHECK_EQ(MessageLoop::current(), sync_loop_); 1014 DCHECK_EQ(MessageLoop::current(), sync_loop_);
1017 SDVLOG(2) << "Do canary job"; 1015 SDVLOG(2) << "Do canary job";
1018 1016
1019 // Only set canary privileges here, when we are about to run the job. This
1020 // avoids confusion in managing canary bits during scheduling, when you
1021 // consider that mode switches (e.g., to config) can "pre-empt" a NUDGE that
1022 // was scheduled as canary, and send it to an "unscheduled" state.
tim (not reviewing) 2013/03/02 01:03:39 This comment is even more relevant than it was bef
rlarocque 2013/03/02 01:21:12 OK, will fix.
1023 to_be_canary->GrantCanaryPrivilege();
1024
1025 if (to_be_canary->purpose() == SyncSessionJob::NUDGE) { 1017 if (to_be_canary->purpose() == SyncSessionJob::NUDGE) {
1026 // TODO(tim): Bug 158313. Remove this check. 1018 // TODO(tim): Bug 158313. Remove this check.
1027 if (pending_nudge_ == NULL || 1019 if (pending_nudge_ == NULL ||
1028 pending_nudge_->session() != to_be_canary->session()) { 1020 pending_nudge_->session() != to_be_canary->session()) {
1029 // |job| is abandoned. 1021 // |job| is abandoned.
1030 SDVLOG(2) << "Dropping a nudge in " 1022 SDVLOG(2) << "Dropping a nudge in "
1031 << "DoSyncSessionJob because another nudge was scheduled"; 1023 << "DoSyncSessionJob because another nudge was scheduled";
1032 return; 1024 return;
1033 } 1025 }
1034 DCHECK_EQ(pending_nudge_->session(), to_be_canary->session()); 1026 DCHECK_EQ(pending_nudge_->session(), to_be_canary->session());
1035 } 1027 }
1036 DoSyncSessionJob(to_be_canary.Pass()); 1028 DoSyncSessionJob(to_be_canary.Pass(), true);
1037 } 1029 }
1038 1030
1039 scoped_ptr<SyncSessionJob> SyncSchedulerImpl::TakePendingJobForCurrentMode() { 1031 scoped_ptr<SyncSessionJob> SyncSchedulerImpl::TakePendingJobForCurrentMode() {
1040 DCHECK_EQ(MessageLoop::current(), sync_loop_); 1032 DCHECK_EQ(MessageLoop::current(), sync_loop_);
1041 // If we find a scheduled pending_ job, abandon the old one and return a 1033 // If we find a scheduled pending_ job, abandon the old one and return a
1042 // a clone. If unscheduled, just hand over ownership. 1034 // a clone. If unscheduled, just hand over ownership.
1043 scoped_ptr<SyncSessionJob> candidate; 1035 scoped_ptr<SyncSessionJob> candidate;
1044 if (mode_ == CONFIGURATION_MODE && wait_interval_.get() 1036 if (mode_ == CONFIGURATION_MODE && wait_interval_.get()
1045 && wait_interval_->pending_configure_job) { 1037 && wait_interval_->pending_configure_job) {
1046 SDVLOG(2) << "Found pending configure job"; 1038 SDVLOG(2) << "Found pending configure job";
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 1190
1199 #undef SDVLOG_LOC 1191 #undef SDVLOG_LOC
1200 1192
1201 #undef SDVLOG 1193 #undef SDVLOG
1202 1194
1203 #undef SLOG 1195 #undef SLOG
1204 1196
1205 #undef ENUM_CASE 1197 #undef ENUM_CASE
1206 1198
1207 } // namespace syncer 1199 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/engine/sync_scheduler_impl.h ('k') | sync/engine/sync_scheduler_whitebox_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698