Speed up findBuildDependencyInQueue

[?]
Jun 7, 2013, 7:51 PM
TPSCSZKXKQAMSLMRACXSHWQ4OY7HPSJSJ4KTJY6HLHZQAJ5MDRZAC

Dependencies

  • [2] YTIDBFGU Drop unused "disabled" columns
  • [3] 7YBYT2LQ
  • [4] DQD7JMSU * Fix the terminology.
  • [5] OV7F5M3E Merge branch 'queue-17'
  • [6] YEXD7CBK Fix findBuildDependencyInQueue
  • [*] NREF6YOA * Don't start more builds concurrently than allowed for each system

Change contents

  • replacement in src/script/hydra-queue-runner at line 54
    [3.43][3.43:65]()
    my ($build) = @_;
    [3.43]
    [3.116]
    my ($buildsByDrv, $build) = @_;
  • replacement in src/script/hydra-queue-runner at line 57
    [3.251][3.251:296](),[3.296][2.286:349](),[2.349][3.374:427](),[3.374][3.374:427]()
    return $db->resultset('Builds')->search(
    { drvpath => [ @deps ], finished => 0, enabled => 1 },
    { join => ['project'], rows => 1 })->single;
    [3.251]
    [3.565]
    foreach my $d (@deps) {
    my $b = $buildsByDrv->{$d};
    next unless defined $b;
    return $db->resultset('Builds')->find($b);
    }
    return undef;
  • edit in src/script/hydra-queue-runner at line 83
    [8.23]
    [8.23]
    # Cache scheduled by derivation path to speed up
    # findBuildDependencyInQueue.
    my $buildsByDrv = {};
    $buildsByDrv->{$_->drvpath} = $_->id
    foreach $db->resultset('Builds')->search({ finished => 0, enabled => 1 }, { join => ['project'] });
  • replacement in src/script/hydra-queue-runner at line 121
    [3.758][3.758:829]()
    while (my $dep = findBuildDependencyInQueue($build)) {
    [3.758]
    [3.829]
    while (my $dep = findBuildDependencyInQueue($buildsByDrv, $build)) {