Fix the jobset unchanged check
When checking whether the jobset is unchanged, we need to compare with the previous JobsetEval regardless of whether it had new builds. Otherwise we'll keep adding new JobsetEval rows.
This commit is contained in:
@ -110,8 +110,7 @@ sub checkJobset {
|
||||
# inputs. If so, bail out.
|
||||
my @args = ($jobset->nixexprinput, $jobset->nixexprpath, inputsToArgs($inputInfo));
|
||||
my $argsHash = sha256_hex("@args");
|
||||
my $prevEval = getPrevJobsetEval($db, $jobset);
|
||||
if ($prevEval->hash eq $argsHash) {
|
||||
if (getPrevJobsetEval($db, $jobset, 0)->hash eq $argsHash) {
|
||||
print STDERR " jobset is unchanged, skipping\n";
|
||||
txn_do($db, sub {
|
||||
$jobset->update({lastcheckedtime => time});
|
||||
@ -126,6 +125,8 @@ sub checkJobset {
|
||||
|
||||
txn_do($db, sub {
|
||||
|
||||
my $prevEval = getPrevJobsetEval($db, $jobset, 1);
|
||||
|
||||
# Clear the "current" flag on all builds. Since we're in a
|
||||
# transaction this will only become visible after the new
|
||||
# current builds have been added.
|
||||
@ -166,6 +167,9 @@ sub checkJobset {
|
||||
while (my ($id, $new) = each %buildIds) {
|
||||
$ev->jobsetevalmembers->create({ build => $id, isnew => $new });
|
||||
}
|
||||
print STDERR " created new eval ", $ev->id, "\n";
|
||||
} else {
|
||||
print STDERR " created cached eval ", $ev->id, "\n";
|
||||
}
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user