From 67015ab39eca2a876a74580cf1a58a2b5beddbc5 Mon Sep 17 00:00:00 2001 From: justinchiu-cohere Date: Wed, 9 Apr 2025 15:11:44 -0400 Subject: [PATCH] fix e2b sandbox timeout --- commit0/harness/execution_context.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/commit0/harness/execution_context.py b/commit0/harness/execution_context.py index 5047119..3a00dfb 100644 --- a/commit0/harness/execution_context.py +++ b/commit0/harness/execution_context.py @@ -245,7 +245,10 @@ def __init__( files_to_collect=files_to_collect, ) - self.sb = Sandbox(timeout=timeout) + # in modal, we create a sandbox for each operation. this seems super slow. + # let's try having a single sandbox for multiple operations + # assume the sandbox needs to be alive for 30 operations + self.sb = Sandbox(timeout=timeout * 30) self.sb.commands.run("curl -LsSf https://astral.sh/uv/install.sh | sh") # setup sandbox env @@ -268,14 +271,14 @@ def exec_run_with_timeout(self, command: str) -> tuple[str, bool, float]: For now, we can just check if the sandbox is still alive. """ - # TODO: setup timeout start_time = time.time() - result = self.sb.commands.run(command, timeout=0) + # half-hour timeout per operation + result = self.sb.commands.run(command, timeout=self.timeout) if self.files_to_collect is not None: for fname in self.files_to_collect: with (self.log_dir / fname).open("w") as f: f.write(self.sb.files.read(f"testbed/{fname}")) - timed_out = self.sb.is_running() + timed_out = not self.sb.is_running() end_time = time.time() return result.stderr, timed_out, end_time - start_time