Skip to content

v0.1.9 — Fix Docker Daemon Hangs

Choose a tag to compare

@architectureman architectureman released this 02 May 12:21
· 147 commits to main since this release

Fix: Docker Tabs Permanently Loading / Empty

What was happening

All Docker tabs (Containers, Images, Volumes, Networks, Compose) showed permanent loading spinners or empty state, even though Docker was running with active containers.

Root Causes Found (3 layers)

1. Tokio Runtime Deadlock (v0.1.8 → v0.1.9 initial fix)
All Docker CLI commands called .output() directly on the async Tokio thread. When 4+ commands fired concurrently on startup, they exhausted the thread pool → deadlock.
→ Fix: spawn_blocking() for all Docker CLI calls.

2. Frozen Docker Daemon (this fix)
The Docker daemon inside Colima's VM periodically becomes unresponsive (socket exists but hangs). Without timeouts, ALL Bollard API calls and Docker CLI commands hung forever.
→ Fix: 5-10 second timeouts on every Bollard and CLI call.

3. No Recovery on Timeout (this fix)
When fetches failed/timed out, the UI showed 'No containers' (misleading). No retry mechanism existed.
→ Fix: Auto-retry every 5 seconds with loading spinners until Docker recovers.

Files Changed

  • docker.rs — 10s CLI timeout + 5s Bollard timeout
  • volumes.rs — 10s CLI timeout
  • networks.rs — 10s CLI timeout
  • compose.rs — 10s CLI timeout
  • docker_state.rs — 5s timeout on ping, update_cache
  • App.tsx — Auto-retry with loading state preservation