hydra-queue-runner: Use nix.machines instead of the SystemTypes table to determine how many build jobs are allowed per system type.

[?]
Mar 4, 2013, 10:44 PM
SA5ZZ3I4SPTEEPJ5YE6JJA2DUPD4UTTC3APBNQL6XZW6PXYJRP6QC

Dependencies

  • [2] LZO3C2KI * Hack around those SQLite timeouts: just retry the transaction.
  • [3] 7YBYT2LQ
  • [4] NREF6YOA * Don't start more builds concurrently than allowed for each system
  • [5] ECBA3GQO * Make the schema class names match the case of the SQL table names.
  • [6] TWVSALRL * Allow the maximum number of concurrent builds per platform to be
  • [7] QZLMDKMU * Queue runner: don't start scheduled builds builds if they belong to
  • [8] MOX7XJ2E Merge the BuildSchedulingInfo table into the Builds table
  • [9] DQD7JMSU * Fix the terminology.

Change contents

  • edit in src/script/hydra-queue-runner at line 75
    [3.539]
    [3.8469]
    my $machines = getMachines;
  • edit in src/script/hydra-queue-runner at line 78
    [3.8470]
    [2.1238]
    my %maxConcurrent = ();
    foreach my $machineName (keys %{$machines}) {
    foreach my $system (${$machines}{$machineName}{'systemTypes'}) {
    $maxConcurrent{$system} = (${$machines}{$machineName}{'maxJobs'} or 0) + ($maxConcurrent{$system} or 0)
    }
    }
  • replacement in src/script/hydra-queue-runner at line 102
    [3.8666][3.756:806](),[3.806][3.5103:5206](),[3.5206][3.2628:2781](),[3.2628][3.2628:2781]()
    # How many extra builds can we start?
    (my $systemTypeInfo) = $db->resultset('SystemTypes')->search({system => $system->system});
    my $maxConcurrent = defined $systemTypeInfo ? $systemTypeInfo->maxconcurrent : 2;
    my $extraAllowed = $maxConcurrent - $nrActive;
    [3.8666]
    [3.892]
    my $extraAllowed = $maxConcurrent{$system} - $nrActive;
  • replacement in src/script/hydra-queue-runner at line 112
    [3.1345][3.2782:2847]()
    "': $nrActive active, $maxConcurrent allowed, ",
    [3.1345]
    [3.626]
    "': $nrActive active, $maxConcurrent{$system} allowed, ",