diff --git a/crates/openshell-cli/src/run.rs b/crates/openshell-cli/src/run.rs index 12b891da1..9e62e6455 100644 --- a/crates/openshell-cli/src/run.rs +++ b/crates/openshell-cli/src/run.rs @@ -1993,7 +1993,7 @@ pub async fn sandbox_create( // Track whether we have seen a non-Ready phase during the watch. let mut saw_non_ready = SandboxPhase::try_from(sandbox.phase) != Ok(SandboxPhase::Ready); let start_time = Instant::now(); - let provision_timeout = Duration::from_secs(120); + let provision_timeout = Duration::from_secs(300); // Track whether we saw the gateway become ready (from log messages). let mut saw_gateway_ready = false; diff --git a/crates/openshell-server/src/sandbox/mod.rs b/crates/openshell-server/src/sandbox/mod.rs index 2fd9b54b6..f8ab6a6dd 100644 --- a/crates/openshell-server/src/sandbox/mod.rs +++ b/crates/openshell-server/src/sandbox/mod.rs @@ -381,7 +381,7 @@ const RECONCILE_INTERVAL: Duration = Duration::from_secs(60); /// How long a sandbox can stay in `Provisioning` in the store without a /// corresponding Kubernetes resource before it is considered orphaned and /// removed. -const ORPHAN_GRACE_PERIOD: Duration = Duration::from_secs(120); +const ORPHAN_GRACE_PERIOD: Duration = Duration::from_secs(300); /// Periodically reconcile the store against Kubernetes to clean up orphaned /// sandbox records. A record is orphaned when it exists in the store but diff --git a/crates/openshell-tui/src/lib.rs b/crates/openshell-tui/src/lib.rs index 9255ae0b2..98f4ed0d6 100644 --- a/crates/openshell-tui/src/lib.rs +++ b/crates/openshell-tui/src/lib.rs @@ -1256,7 +1256,7 @@ fn spawn_create_sandbox(app: &mut App, tx: mpsc::UnboundedSender) { let mut attempts = 0; let sandbox_id = loop { attempts += 1; - if attempts > 60 { + if attempts > 150 { let _ = tx.send(Event::CreateResult(Err( "timed out waiting for sandbox to be ready".to_string(), ))); diff --git a/e2e/rust/src/harness/sandbox.rs b/e2e/rust/src/harness/sandbox.rs index da48c5ed2..7a942265d 100644 --- a/e2e/rust/src/harness/sandbox.rs +++ b/e2e/rust/src/harness/sandbox.rs @@ -25,7 +25,7 @@ fn extract_sandbox_name(output: &str) -> Option { } /// Default timeout for waiting for a sandbox to become ready. -const SANDBOX_READY_TIMEOUT: Duration = Duration::from_secs(120); +const SANDBOX_READY_TIMEOUT: Duration = Duration::from_secs(300); /// RAII guard that deletes a sandbox on drop. /// diff --git a/python/openshell/sandbox.py b/python/openshell/sandbox.py index 6507c9a45..7b48ab3b9 100644 --- a/python/openshell/sandbox.py +++ b/python/openshell/sandbox.py @@ -248,7 +248,7 @@ class SandboxClient: raise SandboxError(f"sandbox {sandbox_name} was not deleted within timeout") def wait_ready( - self, sandbox_name: str, *, timeout_seconds: float = 120.0 + self, sandbox_name: str, *, timeout_seconds: float = 300.0 ) -> SandboxRef: deadline = time.time() + timeout_seconds while time.time() < deadline: