Fix 500 op de Uiterlijk-pagina na een halve update (boiert.eu)
Bart kreeg een 500 op /admin/sites/<slug>/edit. Oorzaak was een gemengde
staat: zijn klonkt-update was gegenereerd voor de oude single-service-layout
en herstart nog klonkt.service, de unit die de migratie juist heeft
uitgezet. De code op schijf werd dus wel bijgewerkt, maar het draaiende
proces nooit herstart. De oude route rendert dan het nieuwe template, dat
een variabele verwacht die de oude route niet meegeeft: ReferenceError, en
Express cachet het gecompileerde template tot de volgende herstart.
Drie lagen gefixt:
- Het aliasveld degradeert bij een ontbrekende variabele naar leeg in
plaats van de hele pagina mee te nemen (typeof-guard, zelfde patroon als
auth-register). Een deploy-moment mag nooit een 500 opleveren.
- De nieuw-site-form gaf dezelfde ReferenceError ook met volledig nieuwe
code: de /new-route rendert hetzelfde template maar gaf apAliases niet
mee. Lokaal gereproduceerd en bevestigd gefixt (beide pagina's 200).
- De wortel: een gedeeld script dat /usr/local/bin/klonkt-update herschrijft
voor de actuele layout. De migratie draait het voortaan zelf, install.sh
genereert de updater er ook mee (kan nooit meer uiteenlopen), en al
gemigreerde servers repareren het met een los commando.
Changed files:
src/routes/admin-sites.js
- /new geeft apAliases mee aan het template
src/views/pages/admin-site-edit.ejs
- typeof-guard op apAliases met uitleg waarom
scripts/klonkt-migrate-data.sh
- herschrijft de updater na de unit-omschakeling; waarschuwt als het
script in een oudere checkout ontbreekt
scripts/install.sh
- inline updater-generatie vervangen door het gedeelde script
deploy/MULTI-INSTANCE.md
- reparatie-instructie voor servers die voor deze fix zijn gemigreerd
New file:
scripts/klonkt-refresh-updater.sh
- idempotent; detecteert de branch uit de checkout; herstart alle
klonkt@<slug>-instances, of klonkt.service als er geen zijn
-robo
Co-Authored-By: Claude Fable 5 <noreply@…>