Remove obsolete Builds columns and provide accurate "Running builds"
This removes the "busy", "locker" and "logfile" columns, which are no longer used by the queue runner. The "Running builds" page now only shows builds that have an active build step.
This commit is contained in:
@ -38,7 +38,6 @@ sub buildToHash {
|
||||
if($build->finished) {
|
||||
$result->{'buildstatus'} = $build->get_column("buildstatus");
|
||||
} else {
|
||||
$result->{'busy'} = $build->get_column("busy");
|
||||
$result->{'priority'} = $build->get_column("priority");
|
||||
}
|
||||
|
||||
@ -114,7 +113,7 @@ sub queue : Chained('api') PathPart('queue') Args(0) {
|
||||
my $nr = $c->request->params->{nr};
|
||||
error($c, "Parameter not defined!") if !defined $nr;
|
||||
|
||||
my @builds = $c->model('DB::Builds')->search({finished => 0}, {rows => $nr, order_by => ["busy DESC", "priority DESC", "id"]});
|
||||
my @builds = $c->model('DB::Builds')->search({finished => 0}, {rows => $nr, order_by => ["priority DESC", "id"]});
|
||||
|
||||
my @list;
|
||||
push @list, buildToHash($_) foreach @builds;
|
||||
@ -136,16 +135,6 @@ sub nrqueue : Chained('api') PathPart('nrqueue') Args(0) {
|
||||
}
|
||||
|
||||
|
||||
sub nrrunning : Chained('api') PathPart('nrrunning') Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
my $nrRunningBuilds = $c->model('DB::Builds')->search({finished => 0, busy => 1 })->count();
|
||||
$c->stash->{'plain'} = {
|
||||
data => "$nrRunningBuilds"
|
||||
};
|
||||
$c->forward('Hydra::View::Plain');
|
||||
}
|
||||
|
||||
|
||||
sub nrbuilds : Chained('api') PathPart('nrbuilds') Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
my $nr = $c->request->params->{nr};
|
||||
@ -212,44 +201,6 @@ sub scmdiff : Chained('api') PathPart('scmdiff') Args(0) {
|
||||
}
|
||||
|
||||
|
||||
sub readNormalizedLog {
|
||||
my ($file) = @_;
|
||||
my $pipe = (-f "$file.bz2" ? "cat $file.bz2 | bzip2 -d" : "cat $file");
|
||||
my $res = `$pipe`;
|
||||
|
||||
$res =~ s/\/nix\/store\/[a-z0-9]*-/\/nix\/store\/...-/g;
|
||||
$res =~ s/nix-build-[a-z0-9]*-/nix-build-...-/g;
|
||||
$res =~ s/[0-9]{2}:[0-9]{2}:[0-9]{2}/00:00:00/g;
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
sub logdiff : Chained('api') PathPart('logdiff') Args(2) {
|
||||
my ($self, $c, $buildid1, $buildid2) = @_;
|
||||
|
||||
my $diff = "";
|
||||
|
||||
my $build1 = getBuild($c, $buildid1);
|
||||
notFound($c, "Build with ID $buildid1 doesn't exist.")
|
||||
if !defined $build1;
|
||||
my $build2 = getBuild($c, $buildid2);
|
||||
notFound($c, "Build with ID $buildid2 doesn't exist.")
|
||||
if !defined $build2;
|
||||
|
||||
if (-f $build1->logfile && -f $build2->logfile) {
|
||||
my $logtext1 = readNormalizedLog($build1->logfile);
|
||||
my $logtext2 = readNormalizedLog($build2->logfile);
|
||||
$diff = diff \$logtext1, \$logtext2;
|
||||
} else {
|
||||
$c->response->status(404);
|
||||
}
|
||||
|
||||
$c->response->content_type('text/x-diff');
|
||||
$c->stash->{'plain'} = { data => (scalar $diff) || " " };
|
||||
$c->forward('Hydra::View::Plain');
|
||||
}
|
||||
|
||||
|
||||
sub triggerJobset {
|
||||
my ($self, $c, $jobset) = @_;
|
||||
print STDERR "triggering jobset ", $jobset->project->name . ":" . $jobset->name, "\n";
|
||||
|
@ -167,7 +167,7 @@ sub showLog {
|
||||
my $url = $c->request->uri->as_string;
|
||||
$url =~ s/tail-reload/tail/g;
|
||||
$c->stash->{url} = $url;
|
||||
$c->stash->{reload} = !$c->stash->{build}->finished && $c->stash->{build}->busy;
|
||||
$c->stash->{reload} = !$c->stash->{build}->finished;
|
||||
$c->stash->{title} = "";
|
||||
$c->stash->{contents} = (scalar logContents($logPath, 50)) || " ";
|
||||
$c->stash->{template} = 'plain-reload.tt';
|
||||
|
@ -44,7 +44,9 @@ sub begin :Private {
|
||||
}
|
||||
|
||||
if (scalar(@args) == 0 || $args[0] ne "static") {
|
||||
$c->stash->{nrRunningBuilds} = $c->model('DB::Builds')->search({ finished => 0, busy => 1 }, {})->count();
|
||||
$c->stash->{nrRunningBuilds} = $c->model('DB::Builds')->search(
|
||||
{ finished => 0, 'buildsteps.busy' => 1 },
|
||||
{ join => 'buildsteps', select => ["id"], distinct => 1 })->count();
|
||||
$c->stash->{nrQueuedBuilds} = $c->model('DB::Builds')->search({ finished => 0 })->count();
|
||||
}
|
||||
|
||||
@ -89,7 +91,11 @@ sub queue_GET {
|
||||
$c->stash->{flashMsg} //= $c->flash->{buildMsg};
|
||||
$self->status_ok(
|
||||
$c,
|
||||
entity => [$c->model('DB::Builds')->search({finished => 0}, { order_by => ["globalpriority desc", "id"]})]
|
||||
entity => [$c->model('DB::Builds')->search(
|
||||
{ finished => 0 },
|
||||
{ order_by => ["globalpriority desc", "id"],
|
||||
, columns => [@buildListColumns]
|
||||
})]
|
||||
);
|
||||
}
|
||||
|
||||
@ -100,7 +106,12 @@ sub status_GET {
|
||||
my ($self, $c) = @_;
|
||||
$self->status_ok(
|
||||
$c,
|
||||
entity => [$c->model('DB::Builds')->search({finished => 0, busy => 1}, { order_by => ["priority DESC", "id"]})]
|
||||
entity => [$c->model('DB::Builds')->search(
|
||||
{ finished => 0, "buildsteps.busy" => 1 },
|
||||
{ order_by => ["globalpriority DESC", "id"],
|
||||
join => "buildsteps",
|
||||
columns => [@buildListColumns]
|
||||
})]
|
||||
);
|
||||
}
|
||||
|
||||
@ -126,7 +137,7 @@ sub machines :Local Args(0) {
|
||||
|
||||
$c->stash->{machines} = $machines;
|
||||
$c->stash->{steps} = [ $c->model('DB::BuildSteps')->search(
|
||||
{ finished => 0, 'me.busy' => 1, 'build.busy' => 1, },
|
||||
{ finished => 0, 'me.busy' => 1, },
|
||||
{ join => [ 'build' ]
|
||||
, order_by => [ 'machine', 'stepnr' ]
|
||||
} ) ];
|
||||
|
@ -450,8 +450,6 @@ sub checkBuild {
|
||||
, nixexprpath => $jobset->nixexprpath
|
||||
, priority => $buildInfo->{schedulingPriority}
|
||||
, finished => 0
|
||||
, busy => 0
|
||||
, locker => ""
|
||||
, iscurrent => 1
|
||||
, ischannel => $buildInfo->{isChannel}
|
||||
});
|
||||
|
@ -29,7 +29,7 @@ our @EXPORT = qw(
|
||||
|
||||
|
||||
# Columns from the Builds table needed to render build lists.
|
||||
Readonly our @buildListColumns => ('id', 'finished', 'timestamp', 'stoptime', 'project', 'jobset', 'job', 'nixname', 'system', 'priority', 'busy', 'buildstatus', 'releasename');
|
||||
Readonly our @buildListColumns => ('id', 'finished', 'timestamp', 'stoptime', 'project', 'jobset', 'job', 'nixname', 'system', 'buildstatus', 'releasename');
|
||||
|
||||
|
||||
sub getBuild {
|
||||
|
@ -455,8 +455,6 @@ sub restartBuilds($$) {
|
||||
txn_do($db, sub {
|
||||
$nrRestarted = $builds->update(
|
||||
{ finished => 0
|
||||
, busy => 0
|
||||
, locker => ""
|
||||
, iscachedbuild => 0
|
||||
});
|
||||
|
||||
|
@ -120,7 +120,7 @@ __PACKAGE__->table("Builds");
|
||||
|
||||
data_type: 'integer'
|
||||
default_value: 0
|
||||
is_nullable: 1
|
||||
is_nullable: 0
|
||||
|
||||
=head2 iscurrent
|
||||
|
||||
@ -150,22 +150,6 @@ __PACKAGE__->table("Builds");
|
||||
default_value: 0
|
||||
is_nullable: 0
|
||||
|
||||
=head2 busy
|
||||
|
||||
data_type: 'integer'
|
||||
default_value: 0
|
||||
is_nullable: 0
|
||||
|
||||
=head2 locker
|
||||
|
||||
data_type: 'text'
|
||||
is_nullable: 1
|
||||
|
||||
=head2 logfile
|
||||
|
||||
data_type: 'text'
|
||||
is_nullable: 1
|
||||
|
||||
=head2 starttime
|
||||
|
||||
data_type: 'integer'
|
||||
@ -246,7 +230,7 @@ __PACKAGE__->add_columns(
|
||||
"timeout",
|
||||
{ data_type => "integer", default_value => 36000, is_nullable => 1 },
|
||||
"ischannel",
|
||||
{ data_type => "integer", default_value => 0, is_nullable => 1 },
|
||||
{ data_type => "integer", default_value => 0, is_nullable => 0 },
|
||||
"iscurrent",
|
||||
{ data_type => "integer", default_value => 0, is_nullable => 1 },
|
||||
"nixexprinput",
|
||||
@ -257,12 +241,6 @@ __PACKAGE__->add_columns(
|
||||
{ data_type => "integer", default_value => 0, is_nullable => 0 },
|
||||
"globalpriority",
|
||||
{ data_type => "integer", default_value => 0, is_nullable => 0 },
|
||||
"busy",
|
||||
{ data_type => "integer", default_value => 0, is_nullable => 0 },
|
||||
"locker",
|
||||
{ data_type => "text", is_nullable => 1 },
|
||||
"logfile",
|
||||
{ data_type => "text", is_nullable => 1 },
|
||||
"starttime",
|
||||
{ data_type => "integer", is_nullable => 1 },
|
||||
"stoptime",
|
||||
@ -566,8 +544,8 @@ __PACKAGE__->many_to_many(
|
||||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2015-09-10 17:34:23
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:JRelp13Cyfi+QVxC92xuqQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2015-10-27 13:54:16
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iN9vwO5i3dURKOTgaPTHxw
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"dependents",
|
||||
@ -647,7 +625,6 @@ my %hint = (
|
||||
'nixname',
|
||||
'system',
|
||||
'priority',
|
||||
'busy',
|
||||
'buildstatus',
|
||||
'releasename'
|
||||
],
|
||||
|
Reference in New Issue
Block a user