guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: “guix gc”, auto gcroots, cluster deployments


From: Ricardo Wurmus
Subject: Re: “guix gc”, auto gcroots, cluster deployments
Date: Fri, 14 May 2021 12:21:16 +0200
User-agent: mu4e 1.4.15; emacs 27.2


Ludovic Courtès <ludovic.courtes@inria.fr> writes:

Hi!

Ricardo Wurmus <rekado@elephly.net> skribis:

There are two problems here:

1) I don’t think “guix gc --list-dead” (or “--list-live”, or more generally “findRoots” in nix/libstore/gc.cc) should delete anything. It should just list and not clean up.

Maybe ‘findRoots’ could populate the list of stale roots and it’d be up
to the caller to decide whether to delete them or not?

Yes, this would be better. It already does this for links whose targets exist but cannot be read.

2) For cluster installations with remote file systems perhaps there’s
something else we can do to record gcroots.  We now have this
excursion into unreadable space because we use a symlink, but the start ($localstatedir/gcroots/auto) and endpoints (/gnu/store/…) are both accessible by the daemon. Since these intermediate locations are
tied to user accounts, could we not store them in a per-user
directory?

This problem does not exist for user profiles, because the link in unreadable home directories is not all that important; it merely points to $localstatedir, which is always readable by the daemon. Perhaps we could do the same for temporary roots and let *users* decide when to let go of them by giving them a command to
erase the important links in $localstatedir.

So instead of having a link from
/gnu/var/guix/gcroots/auto/8ypp8dmwnydgbsgjcms2wyb32mng0wri to /home/me/projects/mrg1_chipseq/.guix-profile-1-link pointing to /gnu/store/ap0vrfxjdj57iqdapg8q83l4f7aylqzm-profile, we would record /var/guix/profiles/per-user/me/auto/8ypp8dmwnydgbsgjcms2wyb32mng0wri pointing to /gnu/store/ap0vrfxjdj57iqdapg8q83l4f7aylqzm-profile, and then point /home/me/projects/mrg1_chipseq/.guix-profile-1-link at
that.  Yes, removing
/home/me/projects/mrg1_chipseq/.guix-profile-1-link would no longer free up the profile for garbage collection, but removing $(readlink /home/me/projects/mrg1_chipseq/.guix-profile-1-link) would.

Yes, but how would per-user/me/auto/* be cleaned up?

Yeah, that’s an open question.

I get the appeal of having these things be cleaned up automatically when the link disappears, but if we added this extra layer of indirection for cluster deployments this would become manual.

Can we make this configurable perhaps…? On my cluster installation I’d rather have a cron job to erase the stuff in per-user/me/auto/* on my own terms, than to have “guix gc” fail to resolve links and consider it all garbage.

--
Ricardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]