Subject: bug#50353: Excessive temproots size when running guix build

From: Maxime Devos <[email-masked]>
Date: Tue, 07 Sep 2021 11:45:33 +0200

Ludovic Courtès schreef op ma 06-09-2021 om 23:18 [+0200]:
> Hi,
> 
> Christopher Baines <[email-masked]> skribis:
> 
> > I spotted a problem with data.guix.gnu.org trying to process this old
> > revision [1]
> > 
> > 1: https://data.guix.gnu.org/revision/75dabac633bb9a33efbebf859f8aa4bb3b9582b2
> > 
> > The machine ran out of disk space, as a ~30GiB file had been created in
> > /var/guix/temproots.
> 
> Sounds fishy.  Those files contain a nul-separated list of GC roots
> (store file names).  Thus, a file in there is proportional to the number
> of ‘add-temp-root’ RPCs made by the client during the session.
> 
> A client with a long-running session (‘guix publish’, Coordinator, Data
> Service, Cuirass, etc.) that regularly adds temp roots makes that file
> grow endlessly.

FWIW, temp roots are added in ‘DerivationGoal::DerivationGoal’
when building things, and ‘DerivationGOal::haveDerivation’,
‘SubstitutionGoal::init’, ‘LocalStore::optimiseStore’
‘LocalStore::addToStoreFromDump’, ‘LocalStore::addTextToStore’,
‘LocalStore::createTempDirInStore’ and ‘LocalStore::importPath’.

I.e., temp roots are not only added from the add-temp-root RPC.

Greetings,
Maxime.