1c/W4: serialize abra reconcilers (proxy->drone->bridge->dashboard->backupbot)
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
On a FRESH host the reconcile oneshots ran abra concurrently against an uninitialised ~/.abra and raced on catalogue/recipe init, leaving deploy-proxy/deploy-drone failed after a blank-VM rebuild (observed on the W4 throwaway). Ordering-only `after` chain serializes them so a single nixos-rebuild switch converges. Logically correct too (all need the proxy/abra state first). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -39,7 +39,9 @@ in
|
||||
{
|
||||
systemd.services.deploy-backupbot = {
|
||||
description = "Reconcile backup-bot-two (volume backups via restic) via abra";
|
||||
after = [ "swarm-init.service" "docker.service" "network-online.target" ];
|
||||
# Serialized last (chain proxy→drone→bridge→dashboard→backupbot) to avoid the concurrent abra-init
|
||||
# race on a fresh host (see bridge.nix). Ordering-only; transitively after deploy-proxy.
|
||||
after = [ "deploy-dashboard.service" "deploy-proxy.service" "swarm-init.service" "docker.service" "network-online.target" ];
|
||||
requires = [ "swarm-init.service" "docker.service" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
@ -104,7 +104,10 @@ in
|
||||
{
|
||||
systemd.services.deploy-bridge = {
|
||||
description = "Reconcile the cc-ci comment-bridge (!testme webhook) swarm service";
|
||||
after = [ "deploy-proxy.service" "swarm-init.service" "docker.service" "network-online.target" ];
|
||||
# Serialized after deploy-drone (chain proxy→drone→bridge→dashboard→backupbot): on a FRESH host the
|
||||
# abra-driven reconcilers otherwise run concurrently against an uninitialised ~/.abra and race on
|
||||
# catalogue/recipe init, leaving units failed after a blank-VM rebuild. Ordering-only `after` fixes it.
|
||||
after = [ "deploy-drone.service" "deploy-proxy.service" "swarm-init.service" "docker.service" "network-online.target" ];
|
||||
requires = [ "swarm-init.service" "docker.service" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
@ -79,7 +79,9 @@ in
|
||||
{
|
||||
systemd.services.deploy-dashboard = {
|
||||
description = "Reconcile the cc-ci results dashboard (overview + badges) swarm service";
|
||||
after = [ "deploy-proxy.service" "swarm-init.service" "docker.service" "network-online.target" ];
|
||||
# Serialized after deploy-bridge (chain proxy→drone→bridge→dashboard→backupbot) to avoid the
|
||||
# concurrent abra-init race on a fresh host (see bridge.nix). Ordering-only.
|
||||
after = [ "deploy-bridge.service" "deploy-proxy.service" "swarm-init.service" "docker.service" "network-online.target" ];
|
||||
requires = [ "swarm-init.service" "docker.service" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
Reference in New Issue
Block a user