fix(deploy): warte auf Backend-Port 3016 vor idle-Daemon-Restart
Deploy-Race: rebreak-idle-staging wurde direkt nach pm2-restart von rebreak-staging gestartet, bevor der Nitro-Server auf Port 3016 lauschte. Der Daemon startete sofort Initial-Scans fuer alle Accounts -- jeder triggerScan()-Call scheiterte mit "fetch failed" (ECONNREFUSED). Kein Crash, aber Error-Log-Burst (N Fehler pro Mail-Account) und verpasster Initial-Sweep. Fix: curl-Preflight in Step 5b wartet bis Port 3016 antwortet (max 60s, 12x alle 5s, --retry-connrefused). Bei Timeout: WARN im Log, kein Deploy-Abbruch (best-effort fuer optionalen Service). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
7ce5e58f8d
commit
8697fee2e8
@ -161,6 +161,28 @@ log "Step 5: pm2 restart rebreak-staging..."
|
|||||||
"${PM2_BIN}" start "${REPO_ROOT}/ecosystem.config.js" --only rebreak-staging
|
"${PM2_BIN}" start "${REPO_ROOT}/ecosystem.config.js" --only rebreak-staging
|
||||||
log "rebreak-staging restarted"
|
log "rebreak-staging restarted"
|
||||||
|
|
||||||
|
# 5b. Warten bis Backend-Port ready ist (max 60s).
|
||||||
|
# Verhindert Deploy-Race: rebreak-idle-staging startet Initial-Scan-Welle sofort
|
||||||
|
# beim Hochfahren -- wenn Port 3016 noch nicht lauscht, schlaegt jeder
|
||||||
|
# triggerScan-Call mit "fetch failed" fehl und der idle-Daemon loggt einen
|
||||||
|
# Burst (1 Fehler pro aktivem Mail-Account). Das ist kein Crash (fetch-Fehler
|
||||||
|
# werden im catch absorbiert), aber es produziert Larm im Error-Log und
|
||||||
|
# verpasst den Initial-Sweep.
|
||||||
|
# curl --retry: 12 Versuche alle 5s = 60s Timeout. --retry-connrefused: auch
|
||||||
|
# bei ECONNREFUSED (Port noch nicht offen) weiterversuchen, nicht sofort abbrechen.
|
||||||
|
# --silent --output /dev/null: kein Response-Body in die Logs.
|
||||||
|
# --fail: Exit-Code != 0 bei HTTP 4xx/5xx -- wir wollen nur "Port lauscht".
|
||||||
|
# Nitro antwortet auf / mit 200 (oder redirect), auf unbekannte Routen mit 404 --
|
||||||
|
# beides bedeutet "Backend laeuft". Daher kein --fail hier.
|
||||||
|
log "Step 5b: Warte auf Backend-Port 3016 (max 60s)..."
|
||||||
|
if curl --silent --output /dev/null \
|
||||||
|
--retry 12 --retry-delay 5 --retry-connrefused \
|
||||||
|
"http://127.0.0.1:3016/"; then
|
||||||
|
log "Backend-Port 3016 ready"
|
||||||
|
else
|
||||||
|
log "WARN: Backend-Port 3016 nicht erreichbar nach 60s -- idle-Restart trotzdem fortsetzen"
|
||||||
|
fi
|
||||||
|
|
||||||
# 6. Optional services (best-effort, Mo's Scope)
|
# 6. Optional services (best-effort, Mo's Scope)
|
||||||
log "Step 6: Optional services restart..."
|
log "Step 6: Optional services restart..."
|
||||||
"${PM2_BIN}" restart rebreak-imap-staging 2>/dev/null || true
|
"${PM2_BIN}" restart rebreak-imap-staging 2>/dev/null || true
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user