guix-patches
[Top][All Lists]
Advanced

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

[bug#73494] [PATCH v4 1/3] services: activation: Continue on exceptions.


From: Hilton Chain
Subject: [bug#73494] [PATCH v4 1/3] services: activation: Continue on exceptions.
Date: Sat, 03 May 2025 22:44:13 +0800

On Sat, 03 May 2025 00:17:23 +0800,
Ludovic Courtès wrote:
>
> Hello,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
>
> > From: Hilton Chain <hako@ultrarare.space>
> >
> > Use ‘invoke’ for backtraces and avoid changing environment.
> >
> > * gnu/services.scm (activation-script): Execute activation scripts in
> > ‘invoke’.
> > Warn about failed activation scripts.
> >
> > Change-Id: I89be31433fbb46d0c4a9dc6115ab167910840b6f
> > Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
>
> [...]
>
> >                        ;; Run the services' activation snippets.
> > -                      ;; TODO: Use 'load-compiled'.
> > -                      (for-each primitive-load '#$actions)))))
> > +                      (for-each (lambda (action)
> > +                                  ;; Don't block activation process when 
> > one
> > +                                  ;; action fails.
> > +                                  (catch #t
> > +                                    (lambda ()
> > +                                      (invoke action))
> > +                                    (lambda _
> > +                                      (warning
> > +                                       (G_ "failed to activate '~a'.~%")
> > +                                       action))))
> > +                                '#$actions)))))
>
> As I suggested upthread (or elsewhere? I’m lost!), I think it would be
> enough to keep loading these files in the main process (as opposed to
> spawning one short-lived process for each activation) and simply catch
> exceptions:
>
>   (for-each (lambda (file)
>               (guard (c …)
>                 (save-module-excursion
>                   …)))
>             '#$actions)
>
> I think it would do what we want while avoiding the overhead.  I don’t
> think it qualifies as “premature optimization” because it’s already in
> place and the semantics are well-defined.

Implemented in v6.

reply via email to

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