fix: \sleep 1\ polling loop violates AGENTS.md 'never use fixed delays' principle (#878)
Replace fixed \`sleep 1\` in the container teardown poll loop with exponential backoff (100ms → 200ms → … → 2000ms cap). The 30s hard timeout is preserved. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
bce6d5ddce
commit
e2554eb844
1 changed files with 4 additions and 2 deletions
|
|
@ -289,15 +289,17 @@ PYEOF
|
||||||
'{completed: $arr, last_updated: now | todate}' > "$PROGRESS_FILE"
|
'{completed: $arr, last_updated: now | todate}' > "$PROGRESS_FILE"
|
||||||
log "DONE $seed_name"
|
log "DONE $seed_name"
|
||||||
|
|
||||||
# 6. Teardown — poll until all containers have exited (no fixed sleep)
|
# 6. Teardown — poll until all containers have exited (exponential backoff, no fixed delay)
|
||||||
cd "$REPO_ROOT" && docker compose down -v 2>/dev/null || true
|
cd "$REPO_ROOT" && docker compose down -v 2>/dev/null || true
|
||||||
_deadline=$(( $(date +%s) + 30 ))
|
_deadline=$(( $(date +%s) + 30 ))
|
||||||
|
_backoff_ms=100
|
||||||
while [[ -n "$(docker compose ps --quiet 2>/dev/null)" ]]; do
|
while [[ -n "$(docker compose ps --quiet 2>/dev/null)" ]]; do
|
||||||
if [[ $(date +%s) -ge $_deadline ]]; then
|
if [[ $(date +%s) -ge $_deadline ]]; then
|
||||||
log "WARNING: containers still present after 30s — proceeding anyway"
|
log "WARNING: containers still present after 30s — proceeding anyway"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep "$(awk "BEGIN{printf \"%.1f\", $_backoff_ms / 1000}")"
|
||||||
|
(( _backoff_ms = _backoff_ms * 2 > 2000 ? 2000 : _backoff_ms * 2 ))
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue