Fix backend patch never loading at boot: schedule deferred middlewared restart
PREINIT initshutdownscripts are executed by middlewared itself (ix-preinit.service, ordered after ix-zfs pool import), so the running process had already imported the stock modules when apply.sh patched them in the overlay — S3/B2 support silently reverted on every reboot until something restarted middlewared. install.sh masked the bug with its explicit restart. apply.sh now detects boot context (parent process is middlewared) and schedules a single detached restart via a transient systemd unit (truecloud-mw-restart, After=multi-user.target and ix-postinit.service). Manual runs never trigger a restart. create_task.py verify no longer trusts hook_status.json alone: it compares the middlewared main-process start time (derived from /proc/<pid>/stat and btime) against patched_at and reports FAIL when the running process predates the patch. recover.sh and uninstall.sh cancel a still-queued deferred restart before their own; docs updated to match the real boot ordering.
This commit is contained in:
+7
-1
@@ -15,8 +15,9 @@
|
||||
# To re-enable the patch after investigating:
|
||||
# rm /mnt/tank/truenas-truecloud-patch/disabled
|
||||
# bash /mnt/tank/truenas-truecloud-patch/patch/apply.sh
|
||||
# systemctl restart middlewared
|
||||
|
||||
VERSION="0.0.3"
|
||||
VERSION="0.0.4"
|
||||
|
||||
PATCH_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
@@ -51,6 +52,10 @@ for _tag in mw ui; do
|
||||
done
|
||||
[ "$_any" -eq 0 ] && echo " No overlays active."
|
||||
|
||||
# Cancel a deferred boot restart if one is still queued — we restart ourselves.
|
||||
systemctl stop truecloud-mw-restart.service 2>/dev/null
|
||||
systemctl reset-failed truecloud-mw-restart.service 2>/dev/null
|
||||
|
||||
echo "Restarting middlewared ..."
|
||||
if systemctl restart middlewared; then
|
||||
echo ""
|
||||
@@ -68,3 +73,4 @@ echo ""
|
||||
echo "To re-enable the patch once you have investigated:"
|
||||
echo " rm $PATCH_DIR/disabled"
|
||||
echo " bash $PATCH_DIR/patch/apply.sh"
|
||||
echo " systemctl restart middlewared"
|
||||
|
||||
Reference in New Issue
Block a user