@@ -51,7 +51,7 @@ async def _get_backend_sandbox_id(
5151 result = await db_session .execute (stmt )
5252 backend_id = result .scalar_one_or_none ()
5353 if backend_id is None :
54- return Result .reject (f"Sandbox { sandbox_id } not found" )
54+ return Result .reject (f"Sandbox { sandbox_id } not found or was killed. " )
5555 return Result .resolve (backend_id )
5656
5757
@@ -124,7 +124,18 @@ async def kill_sandbox(db_session: AsyncSession, sandbox_id: asUUID) -> Result[b
124124 backend = SANDBOX_CLIENT .use_backend ()
125125 success = await backend .kill_sandbox (backend_sandbox_id )
126126
127+ # Set backend_sandbox_id to None to indicate the sandbox is killed
128+ stmt = (
129+ update (SandboxLog )
130+ .where (SandboxLog .id == sandbox_id )
131+ .values (backend_sandbox_id = None )
132+ )
133+ await db_session .execute (stmt )
134+
127135 LOG .info (f"Killed sandbox { sandbox_id } (backend: { backend_sandbox_id } )" )
136+ await _update_will_total_alive_seconds (
137+ db_session , sandbox_id , reset_alive_seconds = 0
138+ )
128139 return Result .resolve (success )
129140 except ValueError as e :
130141 return Result .reject (f"Sandbox backend not available: { e } " )
@@ -295,9 +306,7 @@ async def download_file(
295306 if success :
296307 # Append to generated_files using PostgreSQL JSONB || operator
297308 # Use COALESCE to handle NULL values
298- new_entry = [
299- {"sandbox_path" : from_sandbox_file , "s3_path" : download_to_s3_key }
300- ]
309+ new_entry = [{"sandbox_path" : from_sandbox_file }]
301310 stmt = (
302311 update (SandboxLog )
303312 .where (SandboxLog .id == sandbox_id )
0 commit comments