ci(release): wait out live provider rate limits · openclaw/openclaw@8a1a8ea
steipete
·
2026-06-02
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -13,7 +13,9 @@ fi
|
13 | 13 | |
14 | 14 | attempts="${OPENCLAW_LIVE_COMMAND_ATTEMPTS:-2}" |
15 | 15 | delay_seconds="${OPENCLAW_LIVE_COMMAND_RETRY_DELAY_SECONDS:-10}" |
| 16 | +rate_limit_delay_seconds="${OPENCLAW_LIVE_COMMAND_RATE_LIMIT_RETRY_DELAY_SECONDS:-60}" |
16 | 17 | retry_pattern="${OPENCLAW_LIVE_COMMAND_RETRY_PATTERN:-ECONNRESET|ETIMEDOUT|ENOTFOUND|EAI_AGAIN|fetch failed|TLS connection|socket hang up|UND_ERR|gateway request timeout|model idle timeout|did not produce a response before the model idle timeout|\\b429\\b|\\b529\\b}" |
| 18 | +rate_limit_pattern="${OPENCLAW_LIVE_COMMAND_RATE_LIMIT_PATTERN:-Rate limit reached|rate.?limit|tokens per min|requests per min|\\bTPM\\b|\\bRPM\\b}" |
17 | 19 | |
18 | 20 | if ! [[ "$attempts" =~ ^[1-9][0-9]*$ ]]; then |
19 | 21 | echo "OPENCLAW_LIVE_COMMAND_ATTEMPTS must be a positive integer, got: $attempts" >&2 |
@@ -25,6 +27,11 @@ if ! [[ "$delay_seconds" =~ ^[0-9]+$ ]]; then
|
25 | 27 | exit 64 |
26 | 28 | fi |
27 | 29 | |
| 30 | +if ! [[ "$rate_limit_delay_seconds" =~ ^[0-9]+$ ]]; then |
| 31 | +echo "OPENCLAW_LIVE_COMMAND_RATE_LIMIT_RETRY_DELAY_SECONDS must be a non-negative integer, got: $rate_limit_delay_seconds" >&2 |
| 32 | +exit 64 |
| 33 | +fi |
| 34 | + |
28 | 35 | log_file="$(mktemp)" |
29 | 36 | cleanup() { |
30 | 37 | rm -f "$log_file" |
@@ -46,12 +53,20 @@ for attempt in $(seq 1 "$attempts"); do
|
46 | 53 | exit "$status" |
47 | 54 | fi |
48 | 55 | |
49 | | -if ! grep -Eiq "$retry_pattern" "$log_file"; then |
| 56 | + is_rate_limited=0 |
| 57 | +if grep -Eiq "$rate_limit_pattern" "$log_file"; then |
| 58 | + is_rate_limited=1 |
| 59 | +elif ! grep -Eiq "$retry_pattern" "$log_file"; then |
50 | 60 | exit "$status" |
51 | 61 | fi |
52 | 62 | |
53 | 63 | echo "Live command failed with a retryable provider/network error; retrying ($attempt/$attempts)..." >&2 |
54 | | -if [[ "$delay_seconds" -gt 0 ]]; then |
55 | | - sleep "$delay_seconds" |
| 64 | + next_delay_seconds="$delay_seconds" |
| 65 | +if [[ "$is_rate_limited" -eq 1 ]]; then |
| 66 | + next_delay_seconds="$rate_limit_delay_seconds" |
| 67 | +echo "Provider rate limit detected; waiting ${next_delay_seconds}s before retry." >&2 |
| 68 | +fi |
| 69 | +if [[ "$next_delay_seconds" -gt 0 ]]; then |
| 70 | + sleep "$next_delay_seconds" |
56 | 71 | fi |
57 | 72 | done |
| Original file line number | Diff line number | Diff line change |
|---|
@@ -733,6 +733,9 @@ describe("package artifact reuse", () => {
|
733 | 733 | expect(retryHelper).toContain("fetch failed"); |
734 | 734 | expect(retryHelper).toContain("gateway request timeout"); |
735 | 735 | expect(retryHelper).toContain("model idle timeout"); |
| 736 | +expect(retryHelper).toContain("OPENCLAW_LIVE_COMMAND_RATE_LIMIT_RETRY_DELAY_SECONDS:-60"); |
| 737 | +expect(retryHelper).toContain("Rate limit reached"); |
| 738 | +expect(retryHelper).toContain("tokens per min"); |
736 | 739 | }); |
737 | 740 | |
738 | 741 | it("runs Docker live harnesses from trusted helper scripts", () => { |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。