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