make scheduler start automatic based on housekeeping setting existing
This commit is contained in:
@@ -46,8 +46,12 @@ sub build_tasks_list {
|
|||||||
user_begin => worker_factory('Manager'),
|
user_begin => worker_factory('Manager'),
|
||||||
}];
|
}];
|
||||||
|
|
||||||
set(daemon_schedulers => 1)
|
$has_scheduler = (setting('housekeeping') ? 1 : 0);
|
||||||
if !defined setting('daemon_schedulers');
|
push @$tasks, {
|
||||||
|
max_workers => 1,
|
||||||
|
user_begin => worker_factory('Scheduler'),
|
||||||
|
} if $has_scheduler;
|
||||||
|
|
||||||
set(daemon_pollers => 2)
|
set(daemon_pollers => 2)
|
||||||
if !defined setting('daemon_pollers');
|
if !defined setting('daemon_pollers');
|
||||||
set(daemon_interactives => 2)
|
set(daemon_interactives => 2)
|
||||||
@@ -55,11 +59,6 @@ sub build_tasks_list {
|
|||||||
|
|
||||||
# XXX MCE does not like max_workers => 0
|
# XXX MCE does not like max_workers => 0
|
||||||
|
|
||||||
push @$tasks, {
|
|
||||||
max_workers => setting('daemon_schedulers'),
|
|
||||||
user_begin => worker_factory('Scheduler'),
|
|
||||||
} if setting('daemon_schedulers');
|
|
||||||
|
|
||||||
push @$tasks, {
|
push @$tasks, {
|
||||||
max_workers => setting('daemon_pollers'),
|
max_workers => setting('daemon_pollers'),
|
||||||
user_begin => worker_factory('Poller'),
|
user_begin => worker_factory('Poller'),
|
||||||
@@ -71,8 +70,7 @@ sub build_tasks_list {
|
|||||||
} if setting('daemon_interactives');
|
} if setting('daemon_interactives');
|
||||||
|
|
||||||
info sprintf "MCE will load %s tasks: 1 Manager, %s Scheduler, %s Poller, %s Interactive",
|
info sprintf "MCE will load %s tasks: 1 Manager, %s Scheduler, %s Poller, %s Interactive",
|
||||||
(1+ scalar @$tasks),
|
(1+ scalar @$tasks), $has_scheduler,
|
||||||
(setting('daemon_schedulers') || 0),
|
|
||||||
(setting('daemon_pollers') || 0),
|
(setting('daemon_pollers') || 0),
|
||||||
(setting('daemon_interactives') || 0);
|
(setting('daemon_interactives') || 0);
|
||||||
return $tasks;
|
return $tasks;
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ sub worker_begin {
|
|||||||
debug "entering Scheduler ($wid) worker_begin()";
|
debug "entering Scheduler ($wid) worker_begin()";
|
||||||
|
|
||||||
foreach my $a (keys %$jobactions) {
|
foreach my $a (keys %$jobactions) {
|
||||||
next unless setting('job_schedule')
|
next unless setting('housekeeping')
|
||||||
and exists setting('job_schedule')->{$a};
|
and exists setting('housekeeping')->{$a};
|
||||||
my $config = setting('job_schedule')->{$a};
|
my $config = setting('housekeeping')->{$a};
|
||||||
|
|
||||||
# accept either single crontab format, or individual time fields
|
# accept either single crontab format, or individual time fields
|
||||||
my $cron = Algorithm::Cron->new(@{
|
my $cron = Algorithm::Cron->new(@{
|
||||||
@@ -62,6 +62,8 @@ sub worker_body {
|
|||||||
|
|
||||||
if ($sched->{when}->next_time($win_start) < $win_end) {
|
if ($sched->{when}->next_time($win_start) < $win_end) {
|
||||||
# queue it!
|
# queue it!
|
||||||
|
# due to a table constraint, this will fail if a similar job is
|
||||||
|
# already queued.
|
||||||
try {
|
try {
|
||||||
debug "scheduler ($wid): queueing $a job";
|
debug "scheduler ($wid): queueing $a job";
|
||||||
schema('netdisco')->resultset('Admin')->create({
|
schema('netdisco')->resultset('Admin')->create({
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ daemon_sleep_time: 5
|
|||||||
|
|
||||||
# how many daemon processes
|
# how many daemon processes
|
||||||
# NB one worker will always be a Queue Manager
|
# NB one worker will always be a Queue Manager
|
||||||
daemon_schedulers: 1
|
|
||||||
daemon_interactives: 2
|
daemon_interactives: 2
|
||||||
daemon_pollers: 0
|
daemon_pollers: 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user