diff --git a/scripts/recover-bootstrap.sh b/scripts/recover-bootstrap.sh index 93f5743..12ea545 100755 --- a/scripts/recover-bootstrap.sh +++ b/scripts/recover-bootstrap.sh @@ -139,8 +139,15 @@ if [[ "$NOW" -lt "$COOLDOWN_END" ]]; then if [[ "$DRY_RUN" == "true" ]]; then exit 0 fi - info "Polling for recenter cooldown to elapse ..." + info "Polling for recenter cooldown to elapse (timeout: 5 min) ..." + POLL_ATTEMPTS=0 + MAX_POLL_ATTEMPTS=60 # 60 × 5s = 5 min while true; do + POLL_ATTEMPTS=$(( POLL_ATTEMPTS + 1 )) + if [[ "$POLL_ATTEMPTS" -gt "$MAX_POLL_ATTEMPTS" ]]; then + error "Timed out waiting for recenter cooldown (${MAX_POLL_ATTEMPTS} polls). RPC may be degraded." + exit 1 + fi NOW="$(cast block latest --rpc-url "$RPC_URL" --field timestamp 2>/dev/null || echo "0")" if [[ "$NOW" -ge "$COOLDOWN_END" ]]; then info "Recenter cooldown elapsed." @@ -183,10 +190,17 @@ if [[ -n "$SEED_ETH" && -n "$KRAIKEN" ]]; then info "Seed buy complete." # Poll until recenter cooldown elapses - info "Polling for recenter cooldown to elapse ..." - LAST_RECENTER_AFTER="$(cast call --rpc-url "$RPC_URL" "$LM_ADDRESS" "lastRecenterTime()(uint256)" 2>/dev/null || echo "0")" + info "Polling for recenter cooldown to elapse (timeout: 5 min) ..." + LAST_RECENTER_AFTER="$(cast call --rpc-url "$RPC_URL" "$LM_ADDRESS" "lastRecenterTime()(uint256)" 2>/dev/null || echo "$LAST_RECENTER")" COOLDOWN_TARGET=$(( LAST_RECENTER_AFTER + 60 )) + POLL_ATTEMPTS=0 + MAX_POLL_ATTEMPTS=60 # 60 × 5s = 5 min while true; do + POLL_ATTEMPTS=$(( POLL_ATTEMPTS + 1 )) + if [[ "$POLL_ATTEMPTS" -gt "$MAX_POLL_ATTEMPTS" ]]; then + error "Timed out waiting for recenter cooldown (${MAX_POLL_ATTEMPTS} polls). RPC may be degraded." + exit 1 + fi NOW="$(cast block latest --rpc-url "$RPC_URL" --field timestamp 2>/dev/null || echo "0")" if [[ "$NOW" -ge "$COOLDOWN_TARGET" ]]; then info "Recenter cooldown elapsed."