Restart jobset evals efficiently
[?]
Oct 27, 2015, 12:43 PM
B3UW2ZRBXXRT4CVGLNPQJG63PQNTEY47N2C3WS56U6SDMIZKJ7HACDependencies
- [2]
MR4QK7CERestart: Clear failed dependencies - [3]
J5ITV54PMake restartBuilds faster - [4]
VHV6GI4LAdd a jobset eval action to restart all aborted/cancelled builds - [5]
MBRAFK6FRegister restarted derivations as GC roots - [6]
RYTQLATYKeep track of failed paths in the Hydra database - [7]
GSMOFPKFFix restarting a build - [8]
UOINKJ2JAdd an action to cancel all builds in a jobset eval - [*]
2GK5DOU7* Downloading closures.
Change contents
- edit in src/lib/Hydra/Helper/Nix.pm at line 445
my @buildIds; - replacement in src/lib/Hydra/Helper/Nix.pm at line 446
txn_do($db, sub {my %paths;$builds = $builds->search({ finished => 1 }); - replacement in src/lib/Hydra/Helper/Nix.pm at line 448
$builds = $builds->search({ finished => 1 });foreach my $build ($builds->search({}, { columns => ["drvpath"] })) {next if !isValidPath($build->drvpath);registerRoot $build->drvpath;} - replacement in src/lib/Hydra/Helper/Nix.pm at line 453[3.20]→[3.900:994](∅→∅),[3.900]→[3.900:994](∅→∅),[3.994]→[2.20:160](∅→∅),[3.69]→[3.21:61](∅→∅),[2.160]→[3.21:61](∅→∅),[3.1036]→[3.21:61](∅→∅),[3.61]→[3.1:43](∅→∅),[3.1]→[3.1:43](∅→∅),[3.43]→[3.62:72](∅→∅)
foreach my $build ($builds->all) {next if !isValidPath($build->drvpath);$paths{$_->path} = 1 foreach $build->buildoutputs->all;$paths{$_->path} = 1 foreach $build->buildstepoutputs->all;push @buildIds, $build->id;registerRoot $build->drvpath;}my $nrRestarted = 0; - replacement in src/lib/Hydra/Helper/Nix.pm at line 455
$db->resultset('Builds')->search({ id => \@buildIds })->update(txn_do($db, sub {$nrRestarted = $builds->update( - replacement in src/lib/Hydra/Helper/Nix.pm at line 465
$db->resultset('JobsetEvals')->search({ build => \@buildIds }, { join => 'buildIds' })->update({ nrsucceeded => undef });$db->resultset('JobsetEvals')->search({ id => { -in => $builds->search({}, { join => { 'jobsetevalmembers' => 'eval' }, select => "jobsetevalmembers.eval", as => "eval", distinct => 1 })->as_query }})->update({ nrsucceeded => undef }); - replacement in src/lib/Hydra/Helper/Nix.pm at line 471
$db->resultset('FailedPaths')->search({ path => [ keys %paths ]})->delete;my $cleared = $db->resultset('FailedPaths')->search({ path => { -in => $builds->search({}, { join => "buildoutputs", select => "buildoutputs.path", as => "path", distinct => 1 })->as_query }})->delete;$cleared += $db->resultset('FailedPaths')->search({ path => { -in => $builds->search({}, { join => "buildstepoutputs", select => "buildstepoutputs.path", as => "path", distinct => 1 })->as_query }})->delete;print STDERR "cleared $cleared failed paths\n"; - replacement in src/lib/Hydra/Helper/Nix.pm at line 480
return scalar(@buildIds);return $nrRestarted;