From d64b236540cfc94a7880a2178982223d31e08ffd Mon Sep 17 00:00:00 2001 From: sora <2075279110@qq.com> Date: Fri, 11 Sep 2026 07:07:22 +0000 Subject: [PATCH] run_one: exactly 1 attempt (adapter handles all retries internally) Co-Authored-By: Claude --- evalharness/model/runner.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/evalharness/model/runner.py b/evalharness/model/runner.py index 1c2ee5f..b03a225 100644 --- a/evalharness/model/runner.py +++ b/evalharness/model/runner.py @@ -419,18 +419,15 @@ async def generate_predictions( # backoff so one ConnectError burst cannot kill the whole batch -- # the adapter already retries 5xx/429 and the pool fails over per # instance; this is the last line of defense around asyncio.gather - for attempt in range(3): - try: - pred = await one(s) - break - except Exception: - if attempt == 2: - if progress_reporter is not None: - progress_reporter.advance(success=False) - raise - # minute-scale backoff: cluster routes flap in multi-minute - # bursts; short retries exhaust inside one dead window - await asyncio.sleep((10, 20, 40)[attempt]) + # NO outer retry: the adapter retries internally; a second loop + # here multiplied worst-case time (42+ attempts before this fix). + # One pass, one result or one error. + try: + pred = await one(s) + except Exception: + if progress_reporter is not None: + progress_reporter.advance(success=False) + raise if ckpt_store is not None: ckpt_store.append(keys[i], pred) return i, pred