keep deferrals count in place betweeen mgr restarts

This commit is contained in:
Oliver Gorwits
2018-02-10 11:28:57 +00:00
parent 160d3f2a05
commit 3f7e3b0531
2 changed files with 21 additions and 8 deletions

View File

@@ -21,6 +21,7 @@ sub worker_begin {
debug "entering Manager ($wid) worker_begin()";
# job queue initialisation
debug "mgr ($wid): building acl hints (please be patient...)";
jq_warm_thrusters;
# requeue jobs locally

View File

@@ -57,14 +57,26 @@ sub jq_warm_thrusters {
}
schema('netdisco')->txn_do(sub {
$rs->search({ backend => setting('workers')->{'BACKEND'} })->delete;
$rs->populate([
map {{
backend => setting('workers')->{'BACKEND'},
device => $_,
actionset => $actionset{$_},
}} keys %actionset
]);
$rs->search({
backend => setting('workers')->{'BACKEND'},
}, { for => 'update' }, )->update({ actionset => [] });
$rs->search({
backend => setting('workers')->{'BACKEND'},
deferrals => { '>' => 0 },
}, { for => 'update' }, )->update({ deferrals => \'deferrals - 1' });
$rs->search({
backend => setting('workers')->{'BACKEND'},
actionset => { -value => [] },
deferrals => 0,
})->delete;
$rs->update_or_create({
backend => setting('workers')->{'BACKEND'},
device => $_,
actionset => $actionset{$_},
}, { key => 'primary' }) for keys %actionset;
});
}