task_error bei softupdate

Holger Parplies wfai at parplies.de
Thu Feb 19 00:01:20 CET 2015


Hallo,

Schulz, Reiner wrote on 2015-02-16 15:41:57 +0000 [Re: Re: task_error bei softupdate]:
> [...]
> Beim softupdate kommt folgendes:
> [...]
> + fai-savelog -r
> + echo 'FATAL ERROR. Installation stopped.'
> FATAL ERROR. Installation stopped.
> + '[' Xsoftupdate = Xinstall ']'
> + exit 99
> action.DEFAULT       FAILED with exit code 99.
> Calling task_action
> FAI_ACTION: softupdate
> Performing FAI system update. All data may be overwritten!
> [...]

das liest sich fast so, als sei das fuer den Aufruf aus dem FAI-Prozess heraus
gedacht, nicht fuer den Aufruf aus einer Subshell. Wenn das ein source-hook
waere (action.DEFAULT.source), dann muesste es, wenn ich nichts Wesentliches
uebersehe, eigentlich funktionieren ...

Dirk Geschke wrote on 2015-02-17 12:22:55 +0100 [Re: task_error bei softupdate]:
> [...]
> wenn man sich die Funktion anschaut, das ist call_hook() in
> /usr/lib/fai/subroutines, dann sieht man:
> 
>         if [ -x $hfile ]; then
>             echo "Calling hook: $hook.$cl"
>             sendmon "HOOK $hook.$cl"
>             # execute the hook
>             $hfile $dflag "$@"
>             check_status $hook.$cl $?
>         fi
> 
> D.h. der Status wird zwar gecheckt und, wie in Deinem Fall, ein
> Fehler ausgegeben, sowie geloggt. Das macht /usr/lib/fai/check_status.
> 
> Aber mit der Fehlerausgabe endet es auch, call_hook() wird danach
> normal beendet. Hier müsste eigentlich ein exit erfolgen, wenn $?
> gleich 99 ist (das wird in die() auf diesen Wert gesetzt), täte 
> ich sagen...

Das wuerde bedeuten, ein 'exit 99' in einem hook wuerde FAI abbrechen. Nun ist
99 sicher nicht der exit code, den jeder sofort aus Versehen verwenden wuerde,
um einen nicht-fatalen Fehler zu signalisieren. Trotzdem scheint ein
robusterer Mechanismus wie z.B. bei 'skiptask', nun ja, robuster. Wenn die
Existenz einer Datei $LOGDIR/abort-fai-run signalisieren wuerde, dass der
aktuelle FAI Prozess abgebrochen werden sollte, dann waere diese Datei zum
einen sicher nicht "aus Versehen" erzeugt worden, und der Abbruchwunsch wuerde
zum anderen sehr einfach und eindeutig die Aufrufkette hochpropagiert, egal ob
aus Subshell oder source-hook. Weiterhin koennte jede task selbst entscheiden,
ob sie im Falle eines Abbruchs uebersprungen wird oder nicht (task savelog,
task faiend ...).

Oder man laesst es halt, wie es ist, und verwendet task_error bzw.
stop_fai_installation nur aus FAI selbst und aus source-hooks :-).

Gruss,
Holger


More information about the linux-fai mailing list