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

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

Issue 12320027: Remove SyncSessionJob's location member (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 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 session_context_, 340 session_context_,
341 this, 341 this,
342 SyncSourceInfo(params.source, 342 SyncSourceInfo(params.source,
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));
352 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr()); 351 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr());
353 bool succeeded = DoSyncSessionJob(job.Pass()); 352 bool succeeded = DoSyncSessionJob(job.Pass());
354 353
355 // If we failed, the job would have been saved as the pending configure 354 // If we failed, the job would have been saved as the pending configure
356 // job and a wait interval would have been set. 355 // job and a wait interval would have been set.
357 if (!succeeded) { 356 if (!succeeded) {
358 DCHECK(wait_interval_.get() && wait_interval_->pending_configure_job); 357 DCHECK(wait_interval_.get() && wait_interval_->pending_configure_job);
359 return false; 358 return false;
360 } 359 }
361 } else { 360 } else {
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 << "payloads " 611 << "payloads "
613 << ModelTypeInvalidationMapToString(invalidation_map); 612 << ModelTypeInvalidationMapToString(invalidation_map);
614 613
615 SyncSourceInfo info(source, invalidation_map); 614 SyncSourceInfo info(source, invalidation_map);
616 UpdateNudgeTimeRecords(info); 615 UpdateNudgeTimeRecords(info);
617 616
618 scoped_ptr<SyncSessionJob> job(new SyncSessionJob( 617 scoped_ptr<SyncSessionJob> job(new SyncSessionJob(
619 SyncSessionJob::NUDGE, 618 SyncSessionJob::NUDGE,
620 TimeTicks::Now() + delay, 619 TimeTicks::Now() + delay,
621 CreateSyncSession(info).Pass(), 620 CreateSyncSession(info).Pass(),
622 ConfigurationParams(), 621 ConfigurationParams()));
623 nudge_location));
624 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr()); 622 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr());
625 JobProcessDecision decision = DecideOnJob(*job); 623 JobProcessDecision decision = DecideOnJob(*job);
626 SDVLOG(2) << "Should run " 624 SDVLOG(2) << "Should run "
627 << SyncSessionJob::GetPurposeString(job->purpose()) 625 << SyncSessionJob::GetPurposeString(job->purpose())
628 << " job " << job->session() 626 << " job " << job->session()
629 << " in mode " << GetModeString(mode_) 627 << " in mode " << GetModeString(mode_)
630 << ": " << GetDecisionString(decision); 628 << ": " << GetDecisionString(decision);
631 if (decision != CONTINUE) { 629 if (decision != CONTINUE) {
632 // End of the line, though we may save the job for later. 630 // End of the line, though we may save the job for later.
633 if (decision == SAVE) { 631 if (decision == SAVE) {
(...skipping 21 matching lines...) Expand all
655 job = pending_nudge_->CloneAndAbandon(); 653 job = pending_nudge_->CloneAndAbandon();
656 pending_nudge_ = NULL; 654 pending_nudge_ = NULL;
657 unscheduled_nudge_storage_.reset(); 655 unscheduled_nudge_storage_.reset();
658 // It's also possible we took a canary job, since we allow one nudge 656 // It's also possible we took a canary job, since we allow one nudge
659 // per backoff interval. 657 // per backoff interval.
660 DCHECK(!wait_interval_ || !wait_interval_->had_nudge); 658 DCHECK(!wait_interval_ || !wait_interval_->had_nudge);
661 } 659 }
662 660
663 // TODO(zea): Consider adding separate throttling/backoff for datatype 661 // TODO(zea): Consider adding separate throttling/backoff for datatype
664 // refresh requests. 662 // refresh requests.
665 ScheduleSyncSessionJob(job.Pass()); 663 ScheduleSyncSessionJob(nudge_location, job.Pass());
666 } 664 }
667 665
668 const char* SyncSchedulerImpl::GetModeString(SyncScheduler::Mode mode) { 666 const char* SyncSchedulerImpl::GetModeString(SyncScheduler::Mode mode) {
669 switch (mode) { 667 switch (mode) {
670 ENUM_CASE(CONFIGURATION_MODE); 668 ENUM_CASE(CONFIGURATION_MODE);
671 ENUM_CASE(NORMAL_MODE); 669 ENUM_CASE(NORMAL_MODE);
672 } 670 }
673 return ""; 671 return "";
674 } 672 }
675 673
(...skipping 26 matching lines...) Expand all
702 << delay.InMilliseconds() << " ms delay"; 700 << delay.InMilliseconds() << " ms delay";
703 DCHECK_EQ(MessageLoop::current(), sync_loop_); 701 DCHECK_EQ(MessageLoop::current(), sync_loop_);
704 if (!started_) { 702 if (!started_) {
705 SDVLOG(1) << "Not posting task as scheduler is stopped."; 703 SDVLOG(1) << "Not posting task as scheduler is stopped.";
706 return; 704 return;
707 } 705 }
708 sync_loop_->PostDelayedTask(from_here, task, delay); 706 sync_loop_->PostDelayedTask(from_here, task, delay);
709 } 707 }
710 708
711 void SyncSchedulerImpl::ScheduleSyncSessionJob( 709 void SyncSchedulerImpl::ScheduleSyncSessionJob(
710 const tracked_objects::Location& loc,
712 scoped_ptr<SyncSessionJob> job) { 711 scoped_ptr<SyncSessionJob> job) {
713 DCHECK_EQ(MessageLoop::current(), sync_loop_); 712 DCHECK_EQ(MessageLoop::current(), sync_loop_);
714 if (no_scheduling_allowed_) { 713 if (no_scheduling_allowed_) {
715 NOTREACHED() << "Illegal to schedule job while session in progress."; 714 NOTREACHED() << "Illegal to schedule job while session in progress.";
716 return; 715 return;
717 } 716 }
718 717
719 TimeDelta delay = job->scheduled_start() - TimeTicks::Now(); 718 TimeDelta delay = job->scheduled_start() - TimeTicks::Now();
720 tracked_objects::Location loc(job->from_location());
721 if (delay < TimeDelta::FromMilliseconds(0)) 719 if (delay < TimeDelta::FromMilliseconds(0))
722 delay = TimeDelta::FromMilliseconds(0); 720 delay = TimeDelta::FromMilliseconds(0);
723 SDVLOG_LOC(loc, 2) 721 SDVLOG_LOC(loc, 2)
724 << "In ScheduleSyncSessionJob with " 722 << "In ScheduleSyncSessionJob with "
725 << SyncSessionJob::GetPurposeString(job->purpose()) 723 << SyncSessionJob::GetPurposeString(job->purpose())
726 << " job and " << delay.InMilliseconds() << " ms delay"; 724 << " job and " << delay.InMilliseconds() << " ms delay";
727 725
728 DCHECK(job->purpose() == SyncSessionJob::NUDGE || 726 DCHECK(job->purpose() == SyncSessionJob::NUDGE ||
729 job->purpose() == SyncSessionJob::POLL); 727 job->purpose() == SyncSessionJob::POLL);
730 if (job->purpose() == SyncSessionJob::NUDGE) { 728 if (job->purpose() == SyncSessionJob::NUDGE) {
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
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();
965 963
966 // This will reset the had_nudge variable as well. 964 // This will reset the had_nudge variable as well.
967 wait_interval_.reset(new WaitInterval(WaitInterval::EXPONENTIAL_BACKOFF, 965 wait_interval_.reset(new WaitInterval(WaitInterval::EXPONENTIAL_BACKOFF,
968 length)); 966 length));
969 NotifyRetryTime(base::Time::Now() + length); 967 NotifyRetryTime(base::Time::Now() + length);
970 scoped_ptr<SyncSessionJob> new_job(old_job->CloneFromLocation(FROM_HERE)); 968 scoped_ptr<SyncSessionJob> new_job(old_job->Clone());
971 new_job->set_scheduled_start(TimeTicks::Now() + length); 969 new_job->set_scheduled_start(TimeTicks::Now() + length);
972 if (old_job->purpose() == SyncSessionJob::CONFIGURATION) { 970 if (old_job->purpose() == SyncSessionJob::CONFIGURATION) {
973 SDVLOG(2) << "Configuration did not succeed, scheduling retry."; 971 SDVLOG(2) << "Configuration did not succeed, scheduling retry.";
974 // Config params should always get set. 972 // Config params should always get set.
975 DCHECK(!old_job->config_params().ready_task.is_null()); 973 DCHECK(!old_job->config_params().ready_task.is_null());
976 wait_interval_->pending_configure_job = new_job.get(); 974 wait_interval_->pending_configure_job = new_job.get();
977 } else { 975 } else {
978 // We are not in configuration mode. So wait_interval's pending job 976 // We are not in configuration mode. So wait_interval's pending job
979 // should be null. 977 // should be null.
980 DCHECK(wait_interval_->pending_configure_job == NULL); 978 DCHECK(wait_interval_->pending_configure_job == NULL);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1072 void SyncSchedulerImpl::PollTimerCallback() { 1070 void SyncSchedulerImpl::PollTimerCallback() {
1073 DCHECK_EQ(MessageLoop::current(), sync_loop_); 1071 DCHECK_EQ(MessageLoop::current(), sync_loop_);
1074 ModelSafeRoutingInfo r; 1072 ModelSafeRoutingInfo r;
1075 ModelTypeInvalidationMap invalidation_map = 1073 ModelTypeInvalidationMap invalidation_map =
1076 ModelSafeRoutingInfoToInvalidationMap(r, std::string()); 1074 ModelSafeRoutingInfoToInvalidationMap(r, std::string());
1077 SyncSourceInfo info(GetUpdatesCallerInfo::PERIODIC, invalidation_map); 1075 SyncSourceInfo info(GetUpdatesCallerInfo::PERIODIC, invalidation_map);
1078 scoped_ptr<SyncSession> s(CreateSyncSession(info)); 1076 scoped_ptr<SyncSession> s(CreateSyncSession(info));
1079 scoped_ptr<SyncSessionJob> job(new SyncSessionJob(SyncSessionJob::POLL, 1077 scoped_ptr<SyncSessionJob> job(new SyncSessionJob(SyncSessionJob::POLL,
1080 TimeTicks::Now(), 1078 TimeTicks::Now(),
1081 s.Pass(), 1079 s.Pass(),
1082 ConfigurationParams(), 1080 ConfigurationParams()));
1083 FROM_HERE));
1084 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr()); 1081 job->set_destruction_observer(weak_ptr_factory_.GetWeakPtr());
1085 ScheduleSyncSessionJob(job.Pass()); 1082 ScheduleSyncSessionJob(FROM_HERE, job.Pass());
1086 } 1083 }
1087 1084
1088 void SyncSchedulerImpl::Unthrottle(scoped_ptr<SyncSessionJob> to_be_canary) { 1085 void SyncSchedulerImpl::Unthrottle(scoped_ptr<SyncSessionJob> to_be_canary) {
1089 DCHECK_EQ(MessageLoop::current(), sync_loop_); 1086 DCHECK_EQ(MessageLoop::current(), sync_loop_);
1090 DCHECK_EQ(WaitInterval::THROTTLED, wait_interval_->mode); 1087 DCHECK_EQ(WaitInterval::THROTTLED, wait_interval_->mode);
1091 DCHECK(!to_be_canary.get() || pending_nudge_ == to_be_canary.get() || 1088 DCHECK(!to_be_canary.get() || pending_nudge_ == to_be_canary.get() ||
1092 wait_interval_->pending_configure_job == to_be_canary.get()); 1089 wait_interval_->pending_configure_job == to_be_canary.get());
1093 SDVLOG(2) << "Unthrottled " << (to_be_canary.get() ? "with " : "without ") 1090 SDVLOG(2) << "Unthrottled " << (to_be_canary.get() ? "with " : "without ")
1094 << "canary."; 1091 << "canary.";
1095 1092
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 1195
1199 #undef SDVLOG_LOC 1196 #undef SDVLOG_LOC
1200 1197
1201 #undef SDVLOG 1198 #undef SDVLOG
1202 1199
1203 #undef SLOG 1200 #undef SLOG
1204 1201
1205 #undef ENUM_CASE 1202 #undef ENUM_CASE
1206 1203
1207 } // namespace syncer 1204 } // 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