From: "Ludovic Courtès" <ludo@gnu.org>
To: Leo Prikler <leo.prikler@student.tugraz.at>
Cc: julien lepiller <roptat@lepiller.eu>, 38649@debbugs.gnu.org
Subject: [bug#38649] [PATCH] Parallelize `guix package`
Date: Wed, 18 Dec 2019 15:37:45 +0100 [thread overview]
Message-ID: <87lfr9pume.fsf@gnu.org> (raw)
In-Reply-To: <3d0ca2a8b59dd99e15b55033bc89b2e21aa49814.camel@student.tugraz.at> (Leo Prikler's message of "Tue, 17 Dec 2019 16:19:34 +0100")
Hi Leo,
Leo Prikler <leo.prikler@student.tugraz.at> skribis:
> I think the current policy is wait-for-lock deferred to the user. The
> user has to let the first task complete before they can start the
> second. In this setup, the user can simply launch the setup and trust,
> that it will complete later while taking into account the changes the
> first one has made.
>
> Let's talk about three classes of operations – installations, removals
> and upgrades – and their interactions. I will not take into account
> roll-back, switch-generation and delete-generation, as it is
> nonsensical to perform these in parallel to any other action. Perhaps
> we could check for their presence first and acquire the lock with no-
> wait semantics in that case.
>
> - any operation on different packages: Either succeeds first and the
> other builds on the profile it generates. As there is no collision in
> the packages themselves, there will be no harm.
> - install same package twice: Either succeeds first, the other will be
> a no-op.
> - install vs. remove same package: Non-deterministic, but why would you
> do that?
> - install vs. upgrade same package: Upgrade will be a no-op in either
> case.
> - remove vs. upgrade same package: Upgrade may inadvertently upgrade
> the old package if it happens to come first, but in the final package
> it will be removed either way.
>
> Of course, any operation can also fail midway due to some step not
> succeeding. In that case it would be as if one had issued the other
> command right after that, which may perhaps not be what one wanted to
> do (assuming I install package A, and some guide suggests to also build
> related, but not dependency-connected package B, so I end up installing
> B without A). However, such cases can easily be fixed by either
> installing a fixed version of A later, using B on its own if it can be,
> or rolling back.
>
> Of course, both solutions are flawed in the way that they assume user
> intent either way. Perhaps a better one would be to let the user
> specify whether they want to wait or not through a command line
> parameter, using the current behaviour as the default approach.
I cannot think of a useful behavior if wait-for-lock were implemented.
Really, as a user, you’d be unable to know what the end result is. I
don’t see that as very useful. :-)
What you describe above as potential mitigation is just that,
mitigation, and it could easily become complex (as a maintainer, I
woudn’t want to be responsible for this kind of complexity :-)), and
again, for very questionable “gains”.
Thoughts? Julien?
Thanks,
Ludo’.
next prev parent reply other threads:[~2019-12-18 14:38 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-17 14:18 [bug#38649] [PATCH] Parallelize `guix package` Leo Prikler
2019-12-17 14:20 ` Brett Gilio
2019-12-17 14:34 ` Leo Prikler
2019-12-17 14:38 ` Brett Gilio
2019-12-17 14:32 ` Ludovic Courtès
2019-12-17 15:19 ` Leo Prikler
2019-12-17 15:50 ` Julien Lepiller
2019-12-17 16:16 ` Leo Prikler
2019-12-18 14:37 ` Ludovic Courtès [this message]
2021-05-11 14:24 ` Leo Prikler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87lfr9pume.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=38649@debbugs.gnu.org \
--cc=leo.prikler@student.tugraz.at \
--cc=roptat@lepiller.eu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).