| 11 Jan 2022 |
@ius:nltrix.net | not at all | 01:13:15 |
@ius:nltrix.net | btw, while digging in I noticed something else | 01:14:13 |
@ius:nltrix.net | $ rg IndexBuildOutputsOnPath
upgrade-12.sql
1:create index IndexBuildOutputsOnPath on BuildOutputs(path);
| 01:14:28 |
@ius:nltrix.net | That index doesn't seem to be part of hydra.sql.. | 01:15:21 |
@ius:nltrix.net | (which I assume is the full up-to-date schema) | 01:15:35 |
@grahamc:nixos.org | yeah, it should be | 01:17:54 |
@grahamc:nixos.org | that is Interesting | 01:18:01 |
@grahamc:nixos.org | nice, I got hydra to send github statuses for builds that didn't change in a PR | 02:05:59 |
das_j | Hmm looks like the gcroot stuff doesn't work as I expected… it's currently keeping results of the last X evaluations of the jobset. Shouldn't it keep the last X evaluations per job? | 09:23:19 |
das_j | To elaborate, I have a job that doesn't evaluate anymore and the latest build (some evals ago) has been gc'ed even though it's the latest one | 09:23:50 |
@grahamc:nixos.org | that is the way I'd expect it to work | 14:29:30 |
@grahamc:nixos.org | * the way it currently works is the way I'd expect it to work | 14:29:37 |
das_j | so it does look like we have different ideas how it's supposed to work :D | 14:29:51 |
@grahamc:nixos.org | it could be very expensive to find the most recent job that builds/evaluates, especially because does it not evaluate because it was removed, or does it not evaluate because it is broken -- I don't think we differentiate | 14:31:32 |
das_j | I can try a RunCommand for that particular jobset that sets the latest job result as "Keep" (if I can figure out how I do that) | 14:32:11 |
@grahamc:nixos.org | that is an interesting idea! | 14:33:56 |
@grahamc:nixos.org | you would keep stale GC roots around for jobsets that are deleted, but that is probably f ine | 14:42:21 |
ajs124 | doesn't that happen already? | 14:42:46 |
@grahamc:nixos.org | I don't think so | 14:43:14 |
@grahamc:nixos.org | but maybe? | 14:43:16 |
das_j | I don't think so, no | 14:43:24 |
das_j | it goes over all jobsets, marks the roots to keep, and then goes over all root and deletes unmarked ones | 14:44:09 |
das_j | also fyi:
# If the jobset has been hidden and disabled for more than one
# week, then don't keep its builds anymore.
if ($jobset->enabled == 0 && ($project->hidden == 1 || $jobset->hidden == 1) && (time() - ($jobset->lastcheckedtime || 0) > (7 * 24 * 3600))) {
print STDERR "*** skipping disabled jobset ", $project->name, ":", $jobset->name, "\n";
next;
}
| 14:46:01 |
@grahamc:nixos.org | oh that is a nice enough feature | 14:46:46 |
das_j | would be even nicer if anyone knew about it :D | 14:46:56 |
@grahamc:nixos.org | I am constantly amazed by features I find | 14:47:18 |
das_j | also:
# Don't delete roots that are less than a day old, to prevent
# a race where hydra-eval-jobs has added a root but
# hydra-evaluator hasn't added them to the database yet.
| 14:47:41 |
@grahamc:nixos.org | got it | 14:47:56 |
@grahamc:nixos.org | well, hydra-eval-jobset can't take more than 1h to complete, so that 1d is generously sufficient | 14:48:32 |
@grahamc:nixos.org | re: https://github.com/NixOS/hydra/blob/ff26ce0d06d222ac0ee2908b72130e179e779165/src/script/hydra-eval-jobset#L41 | 14:49:03 |