fix(sensor-proxy): eliminate race in migration script
Stop pulse-sensor-proxy service before modifying config.yaml to prevent races with the running daemon or concurrent CLI commands. The migration script now: 1. Stops service if running 2. Updates config atomically (temp + rename in same directory) 3. Restarts service if it was running This achieves complete architectural isolation - ALL config file writers are now coordinated (either through Phase 2 CLI locking or by ensuring the service is stopped during modification). Addresses final Codex review feedback.
This commit is contained in:
parent
a24e9053d1
commit
879de50131
1 changed files with 13 additions and 3 deletions
|
|
@ -148,12 +148,22 @@ EOF
|
||||||
chown pulse-sensor-proxy:pulse-sensor-proxy "$CONFIG_FILE" 2>/dev/null || true
|
chown pulse-sensor-proxy:pulse-sensor-proxy "$CONFIG_FILE" 2>/dev/null || true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log "Stopping service to prevent config file races..."
|
||||||
|
if systemctl is-active --quiet pulse-sensor-proxy; then
|
||||||
|
systemctl stop pulse-sensor-proxy
|
||||||
|
SERVICE_WAS_RUNNING=true
|
||||||
|
else
|
||||||
|
SERVICE_WAS_RUNNING=false
|
||||||
|
fi
|
||||||
|
|
||||||
log "Updating config..."
|
log "Updating config..."
|
||||||
update_config_atomically
|
update_config_atomically
|
||||||
|
|
||||||
if [[ "$SKIP_RESTART" == false ]]; then
|
if [[ "$SKIP_RESTART" == false ]] && [[ "$SERVICE_WAS_RUNNING" == true ]]; then
|
||||||
log "Restarting pulse-sensor-proxy..."
|
log "Starting pulse-sensor-proxy..."
|
||||||
systemctl restart pulse-sensor-proxy
|
systemctl start pulse-sensor-proxy
|
||||||
|
elif [[ "$SERVICE_WAS_RUNNING" == false ]]; then
|
||||||
|
log "Service was not running; leaving stopped"
|
||||||
else
|
else
|
||||||
warn "Skipping service restart; control-plane sync will start on next restart"
|
warn "Skipping service restart; control-plane sync will start on next restart"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue