backend field in jobqueue (#1114)

implements #969
This commit is contained in:
Oliver Gorwits
2023-10-24 21:49:37 +01:00
committed by GitHub
parent d6e36dcad0
commit 21bc8cf63e
13 changed files with 49 additions and 31 deletions

View File

@@ -112,7 +112,8 @@ sub jq_getsome {
job => $job->id,
-exists => $jobs->search({
job => { '>' => $job->id },
status => { -like => 'queued-%' },
status => 'queued',
backend => { '!=' => undef },
started => \[q/> (LOCALTIMESTAMP - ?::interval)/, setting('jobs_stale_after')],
%job_properties,
})->as_query,
@@ -131,7 +132,8 @@ sub jq_getsome {
sub jq_locked {
my @returned = ();
my $rs = schema(vars->{'tenant'})->resultset('Admin')->search({
status => ('queued-'. setting('workers')->{'BACKEND'}),
status => 'queued',
backend => setting('workers')->{'BACKEND'},
started => \[q/> (LOCALTIMESTAMP - ?::interval)/, setting('jobs_stale_after')],
});
@@ -147,7 +149,7 @@ sub jq_queued {
return schema(vars->{'tenant'})->resultset('Admin')->search({
device => { '!=' => undef},
action => $job_type,
status => { -like => 'queued%' },
status => 'queued',
})->get_column('device')->all;
}
@@ -161,7 +163,8 @@ sub jq_lock {
my $updated = schema(vars->{'tenant'})->resultset('Admin')
->search({ job => $job->id, status => 'queued' }, { for => 'update' })
->update({
status => ('queued-'. setting('workers')->{'BACKEND'}),
status => 'queued',
backend => setting('workers')->{'BACKEND'},
started => \"LOCALTIMESTAMP",
});
@@ -205,7 +208,7 @@ sub jq_defer {
# lock db row and update to show job is available
schema(vars->{'tenant'})->resultset('Admin')
->search({ job => $job->id }, { for => 'update' })
->update({ status => 'queued', started => undef, log => $job->log });
->update({ status => 'queued', backend => undef, started => undef, log => $job->log });
});
$happy = true;
}
@@ -257,12 +260,7 @@ sub jq_complete {
sub jq_log {
return schema(vars->{'tenant'})->resultset('Admin')->search({
(param('backend') ? (
'me.status' => { '=' => [
# FIXME 'done-'. param('backend'),
'queued-'. param('backend'),
] },
) : ()),
(param('backend') ? ('me.backend' => param('backend')) : ()),
(param('action') ? ('me.action' => param('action')) : ()),
(param('device') ? (
-or => [
@@ -271,7 +269,16 @@ sub jq_log {
],
) : ()),
(param('username') ? ('me.username' => param('username')) : ()),
(param('status') ? ('me.status' => lc(param('status'))) : ()),
(param('status') ? (
(param('status') eq 'Running') ? (
-and => [
{ 'me.backend' => { '!=' => undef } },
{ 'me.status' => 'queued' },
],
) : (
'me.status' => lc(param('status'))
)
) : ()),
(param('duration') ? (
-bool => [
-or => [