From ffedbe59961f56e35656e23d32a126a9296469a4 Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Thu, 21 Oct 2021 09:34:06 -0400 Subject: [PATCH] restart/cancelBuilds: always pass resultsets explicitly --- src/lib/Hydra/Controller/Admin.pm | 2 +- src/lib/Hydra/Controller/Build.pm | 4 ++-- src/lib/Hydra/Controller/JobsetEval.pm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/Hydra/Controller/Admin.pm b/src/lib/Hydra/Controller/Admin.pm index 8dd3c348..059a4419 100644 --- a/src/lib/Hydra/Controller/Admin.pm +++ b/src/lib/Hydra/Controller/Admin.pm @@ -32,7 +32,7 @@ sub machines : Chained('admin') PathPart('machines') Args(0) { sub clear_queue_non_current : Chained('admin') PathPart('clear-queue-non-current') Args(0) { my ($self, $c) = @_; - my $builds = $c->model('DB::Builds')->search( + my $builds = $c->model('DB::Builds')->search_rs( { id => { -in => \ "select id from Builds where id in ((select id from Builds where finished = 0) except (select build from JobsetEvalMembers where eval in (select max(id) from JobsetEvals where hasNewBuilds = 1 group by jobset_id)))" } }); my $n = cancelBuilds($c->model('DB')->schema, $builds); diff --git a/src/lib/Hydra/Controller/Build.pm b/src/lib/Hydra/Controller/Build.pm index a2217da1..72883579 100644 --- a/src/lib/Hydra/Controller/Build.pm +++ b/src/lib/Hydra/Controller/Build.pm @@ -487,7 +487,7 @@ sub restart : Chained('buildChain') PathPart Args(0) { my ($self, $c) = @_; my $build = $c->stash->{build}; requireRestartPrivileges($c, $build->project); - my $n = restartBuilds($c->model('DB')->schema, $c->model('DB::Builds')->search({ id => $build->id })); + my $n = restartBuilds($c->model('DB')->schema, $c->model('DB::Builds')->search_rs({ id => $build->id })); error($c, "This build cannot be restarted.") if $n != 1; $c->flash->{successMsg} = "Build has been restarted."; $c->res->redirect($c->uri_for($self->action_for("build"), $c->req->captures)); @@ -498,7 +498,7 @@ sub cancel : Chained('buildChain') PathPart Args(0) { my ($self, $c) = @_; my $build = $c->stash->{build}; requireCancelBuildPrivileges($c, $build->project); - my $n = cancelBuilds($c->model('DB')->schema, $c->model('DB::Builds')->search({ id => $build->id })); + my $n = cancelBuilds($c->model('DB')->schema, $c->model('DB::Builds')->search_rs({ id => $build->id })); error($c, "This build cannot be cancelled.") if $n != 1; $c->flash->{successMsg} = "Build has been cancelled."; $c->res->redirect($c->uri_for($self->action_for("build"), $c->req->captures)); diff --git a/src/lib/Hydra/Controller/JobsetEval.pm b/src/lib/Hydra/Controller/JobsetEval.pm index 63a11dfa..21c4e25f 100644 --- a/src/lib/Hydra/Controller/JobsetEval.pm +++ b/src/lib/Hydra/Controller/JobsetEval.pm @@ -153,7 +153,7 @@ sub cancel : Chained('evalChain') PathPart('cancel') Args(0) { sub restart { my ($self, $c, $condition) = @_; requireRestartPrivileges($c, $c->stash->{project}); - my $builds = $c->stash->{eval}->builds->search({ finished => 1, buildstatus => $condition }); + my $builds = $c->stash->{eval}->builds->search_rs({ finished => 1, buildstatus => $condition }); my $n = restartBuilds($c->model('DB')->schema, $builds); $c->flash->{successMsg} = "$n builds have been restarted."; $c->res->redirect($c->uri_for($c->controller('JobsetEval')->action_for('view'), $c->req->captures));