Nightly demo reset: the demos were killed, not the migration

documenta-, lenbachhaus- and stadtmuseum-demo, night of 2026-11-13

What it looked like

DemoLog ends atpodman pspodman exec
stadtmuseum-demoApplying 0113_link_contractUp (unhealthy)crun: not running
documenta-demoApplying 0149_virtual_field_cacheUp (unhealthy)crun: not running
lenbachhaus-demoApplying 0159_english_index_namesUp (unhealthy)crun: not running

Three different migrations, no error, no OOM, no restart. The processes inside the containers were gone, but podman still listed the containers as running.

What happened (from the host journal)

The fix

Before

[Service]
Type=oneshot
ExecStart=…/moliri-ctl.sh demo-reset
TimeoutStartSec=420
# KillMode=control-group (default)

After

[Service]
Type=oneshot
ExecStart=…/moliri-ctl.sh demo-reset
TimeoutStartSec=420
KillMode=process

Only moliri-ctl is signalled, and it has exited by then. The containers keep running. In addition, demo-reset now waits until boot_state.sh reports that the demo has finished starting, instead of trusting "healthy" alone. 0113 and the other migrations need no change.

On the host, once it is on master

cd /pods/moliri_sveltekit; git pull --ff-only
systemctl daemon-reload
podman rm -f moliri-db-stadtmuseum-demo moliri-db-documenta-demo moliri-db-lenbachhaus-demo
rm -f /var/lib/moliri-watchdog/state/recover_moliri-db-*-demo
systemctl start moliri-demo-reset.service

The last command takes a few minutes. Afterwards, journalctl -u moliri-demo-reset -n 20 shows "remains running after unit stopped" for each conmon. That message is expected now.