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 = {
|
systemd.services.deploy-backupbot = {
|
||||||
description = "Reconcile backup-bot-two (volume backups via restic) via abra";
|
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" ];
|
requires = [ "swarm-init.service" "docker.service" ];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|||||||
@ -104,7 +104,10 @@ in
|
|||||||
{
|
{
|
||||||
systemd.services.deploy-bridge = {
|
systemd.services.deploy-bridge = {
|
||||||
description = "Reconcile the cc-ci comment-bridge (!testme webhook) swarm service";
|
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" ];
|
requires = [ "swarm-init.service" "docker.service" ];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|||||||
@ -79,7 +79,9 @@ in
|
|||||||
{
|
{
|
||||||
systemd.services.deploy-dashboard = {
|
systemd.services.deploy-dashboard = {
|
||||||
description = "Reconcile the cc-ci results dashboard (overview + badges) swarm service";
|
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" ];
|
requires = [ "swarm-init.service" "docker.service" ];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|||||||
Reference in New Issue
Block a user