From 7fe5f080d7ca663cf38cda6f6f4a8f5d1b24a9b3 Mon Sep 17 00:00:00 2001 From: Debug Agent Date: Fri, 3 Apr 2026 22:42:34 -0300 Subject: [PATCH] fix: reset BuildKit cache between retries for base image and assembly builds Base image builds (`_build_base_with_logging`) and assembly builds (`_assemble_with_logging`) were missing the `maybe_reset_buildkit` call that agent-server image builds already had. This meant transient BuildKit cache corruption (e.g. digest mismatches from Blacksmith remote builders) persisted across retries, causing every attempt to fail identically. Co-Authored-By: Claude Opus 4.6 --- benchmarks/swebench/build_base_images.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/benchmarks/swebench/build_base_images.py b/benchmarks/swebench/build_base_images.py index be28417e4..8f37fc6d2 100644 --- a/benchmarks/swebench/build_base_images.py +++ b/benchmarks/swebench/build_base_images.py @@ -30,6 +30,7 @@ capture_output, default_build_output_dir, ) +from benchmarks.utils.buildx_utils import maybe_reset_buildkit from benchmarks.utils.constants import EVAL_AGENT_SERVER_IMAGE from benchmarks.utils.image_utils import remote_image_exists from openhands.sdk import get_logger @@ -298,6 +299,7 @@ def _build_base_with_logging( result.log_path = str(log_path) if result.error: logger.error("Base build error for %s: %s", base_image, result.error) + maybe_reset_buildkit(base_image, image, attempt, max_retries) if attempt == max_retries - 1: return result continue @@ -673,6 +675,7 @@ def _assemble_with_logging( result.log_path = str(log_path) if result.error: logger.error("Assembly error for %s: %s", base_image, result.error) + maybe_reset_buildkit(base_image, target_image, attempt, max_retries) if attempt == max_retries - 1: return result continue @@ -693,6 +696,7 @@ def _assemble_with_logging( error=f"Wrapping failed: {wrap_result.error}", log_path=str(log_path), ) + maybe_reset_buildkit(base_image, target_image, attempt, max_retries) if attempt == max_retries - 1: return result continue