Fix extreme slowness in hydra-queue-runner
[?]
Oct 11, 2013, 8:46 AM
ZZYTUBG2HVWNYS5P3FHKK5L5CYN4ZVXPSUE36A27KPHOL6UPJHEACDependencies
- [2]
X3YLTWJAhydra-queue-runner: Cache the lookup of time spent per jobset - [3]
OV7F5M3EMerge branch 'queue-17' - [4]
TPSCSZKXSpeed up findBuildDependencyInQueue - [5]
GEADFVZ5hydra-queue-runner: Improved scheduling - [6]
YEXD7CBKFix findBuildDependencyInQueue - [*]
7YBYT2LQ - [*]
7DWCXNC7Use the new Nix Perl bindings - [*]
DTXTS7LN* Speed up findBuildDependencyInQueue by doing only one SQL query for - [*]
DQD7JMSU* Fix the terminology.
Change contents
- edit in src/script/hydra-queue-runner at line 12
use Set::Scalar; - replacement in src/script/hydra-queue-runner at line 56
my $b = $buildsByDrv->{$d};next unless defined $b;return $db->resultset('Builds')->find($b);my $bs = $buildsByDrv->{$d};next unless defined $bs;return $db->resultset('Builds')->find((@$bs)[0]); - edit in src/script/hydra-queue-runner at line 64[10.369][11.451]
sub blockBuilds {my ($buildsByDrv, $blockedBuilds, $build) = @_;my @rdeps = grep { /\.drv$/ && $_ ne $build->drvpath } computeFSClosure(1, 0, $build->drvpath);foreach my $drv (@rdeps) {my $bs = $buildsByDrv->{$drv};next if !defined $bs;$blockedBuilds->insert($_) foreach @$bs;}} - replacement in src/script/hydra-queue-runner at line 95
$buildsByDrv->{$_->drvpath} = $_->idforeach $db->resultset('Builds')->search({ finished => 0 }, { join => ['project'] });push @{$buildsByDrv->{$_->drvpath}}, $_->idforeach $db->resultset('Builds')->search({ finished => 0 });# Builds in the queue of which a dependency is already building.my $blockedBuilds = Set::Scalar->new();blockBuilds($buildsByDrv, $blockedBuilds, $_)foreach $db->resultset('Builds')->search({ finished => 0, busy => 1 }); - edit in src/script/hydra-queue-runner at line 182
next if $blockedBuilds->has($build->id); - edit in src/script/hydra-queue-runner at line 209
blockBuilds($buildsByDrv, $blockedBuilds, $build);