Zet de oude klonkt.service opzij; maskeren werkte niet
Correctie op f434294. Daar maskeerde ik de oude unit om te voorkomen dat een
systemctl restart klonkt hem uit de dood liet opstaan. Getest met een
user-unit blijkt dat niet te werken:
Failed to mask unit: File '.../masktest.service' already exists
systemctl mask legt een symlink naar /dev/null op het pad van de unit, maar
install.sh schrijft klonkt.service in /etc/systemd/system, de map met de
hoogste prioriteit. Er is dan geen plek meer om de mask neer te zetten en
systemd weigert. Na de mislukte mask start restart de unit gewoon nog
(exitcode 0), dus de fix deed niets.
Erger: die mask stond zonder vangnet onder set -euo pipefail. In het
migratiescript zou hij de migratie afbreken NADAT de data al verplaatst was.
De fix was dus niet alleen nutteloos maar ook gevaarlijk.
Wat wel werkt, en nu getest is in beide richtingen: het unit-bestand opzij
zetten met een tijdstempel en daemon-reload. systemd kent de unit dan niet
meer, en een restart faalt hard met "Unit klonkt.service not found"
(exitcode 5) in plaats van stilletjes een tweede proces te starten dat een
lege database in de checkout schrijft. Terugzetten plus daemon-reload maakt
hem weer gewoon startbaar, dus de rollback blijft intact.
Changed files:
scripts/klonkt-migrate-data.sh
- eigen stap 'Retiring klonkt.service': stop, disable, bestand naar
klonkt.service.retired-<tijdstempel>, daemon-reload
- stop en disable krijgen een vangnet zodat een al gestopte unit de
migratie niet afbreekt
- waarom maskeren hier niet kan, staat erbij; dat is niet vanzelfsprekend
scripts/klonkt-refresh-updater.sh
- zelfde aanpak voor al gemigreerde servers, met een expliciete
waarschuwing als het verplaatsen niet lukt
deploy/MULTI-INSTANCE.md
- rollback bijgewerkt naar het terugzetten van het bestand
-robo
Co-Authored-By: Claude Fable 5 <noreply@…>