Ludovic Courtès writes: > Ludovic Courtès skribis: > >> I think we should change the above to log and gracefully handle failure >> to load an individual service file. > > With the change below, every service except the offending one is loaded > and started as expected: > > --8<---------------cut here---------------start------------->8--- > [ 22.450515] shepherd[1]: Service root running with value #t. > [ 22.454624] shepherd[1]: Service root has been started. > [ 22.711738] shepherd[1]: Exception caught while loading '/gnu/store/fjis6iqpjfcnr90fy8rsg9v4j828jslv-shepherd-gwl-web.go': #<&compound-exception components: (#<&undefined-variable> #<&origin origin: #f> #<&message message: "Unbound variable: ~S"> #<&irritants irri > [ 22.711839] tants: (make-forkexec-constructor/container)> #<&exception-with-kind-and-args kind: unbound-variable args: (#f "Unbound variable: ~S" (make-forkexec-constructor/container) #f)>)> > [ 22.755146] shepherd[1]: starting services... > [ 22.756491] shepherd[1]: Configuration successfully loaded from '/gnu/store/mq7y31xnjcjwjkyf6w7qiaq61g6n9f5x-shepherd.conf'. > Uncaught exception in task: > In fibers.scm: > 172:8 7 (_) > In ice-9/exceptions.scm: > 406:15 6 (_) > In ice-9/boot-9.scm: > 1752:10 5 (with-exception-handler _ _ #:unwind? _ # _) > In shepherd/service.scm: > 824:39 4 (_) > In oop/goops.scm: > 1567:11 3 (cache-miss #f) > 1585:2 2 (_ _ _) > In ice-9/boot-9.scm: > 1685:16 1 (raise-exception _ #:continuable? _) > 1683:16 0 (raise-exception _ #:continuable? _) > ice-9/boot-9.scm:1683:16: In procedure raise-exception: > No applicable method for #< one-shot-service? (1)> in call (one-shot-service? #f) > [ 22.798737] shepherd[1]: Starting service user-file-systems... > [ 22.800361] shepherd[1]: Starting service root-file-system... > [ 22.802015] shepherd[1]: Starting service host-name... > [ 22.803688] shepherd[1]: Starting service pam... > [ 22.805372] shepherd[1]: Starting service sysctl... > [ 22.806926] shepherd[1]: Starting service loopback... > [ 22.808225] shepherd[1]: Starting service firewall... > --8<---------------cut here---------------end--------------->8--- > > (There’s still this scary-looking but harmless backtrace in the middle: > that’s because (start-in-the-background '(something-that-does-not-exist)) > throws like that as of 0.10.4.) > > Once booted, shepherd is fine and you can interact normally with it; the > only thing missing is, in this case, the ‘gwl-web’ service, which we > failed to load. > > I think that’s a significant improvement. > > Thoughts? That looks good to me, the "Arrange to spawn a REPL if something goes wrong" comment needs removing/updating, but that's the only thing I spotted.