Normalize nixexpr{input,path} from builds to jobsetevals.

Duplicating this data on every record of the builds table cost
approximately 4G of duplication.

Note that the database migration included took about 4h45m on an
untuned server which uses very slow rotational disks in a RAID5 setup,
with not a lot of RAM. I imagine in production it might take an hour
or two, but not 4. If this should become a chunked migration, I can do
that.

Note: Because of the question about chunked migrations, I have NOT
YET tested this migration thoroughly enough for merge.
This commit is contained in:
Graham Christensen
2021-01-22 07:14:24 -05:00
parent 53c2fc2216
commit 9516b256f1
9 changed files with 62 additions and 36 deletions

View File

@ -460,8 +460,6 @@ sub checkBuild {
, nixname => $buildInfo->{nixName}
, drvpath => $drvPath
, system => $buildInfo->{system}
, nixexprinput => $jobset->nixexprinput
, nixexprpath => $jobset->nixexprpath
, priority => $buildInfo->{schedulingPriority}
, finished => 0
, iscurrent => 1
@ -724,6 +722,8 @@ sub checkJobsetWrapped {
, hasnewbuilds => $jobsetChanged ? 1 : 0
, nrbuilds => $jobsetChanged ? scalar(keys %buildMap) : undef
, flake => $flakeRef
, nixexprinput => $jobset->nixexprinput
, nixexprpath => $jobset->nixexprpath
});
$db->storage->dbh->do("notify eval_added, ?", undef,