Skip to content

fix(opencode): share one scoped serve process per instance instead of one per session #19

Description

@nohat

Each OpenCode thread's startSession (Layers/OpenCodeAdapter.ts) spawns its own scoped opencode serve via connectToOpenCodeServer, plus OpenCodeServerOwner owns another per-instance server, plus probes/inventory spawn more — all opening the same shared OpenCode SQLite DB (~/.local/share/opencode/opencode.db). This multiplies SQLite lock contention and produces the immediate 'database is locked' turn-start failures seen in live userdata (Oct 3-4).

Proposed: share one scoped server per provider instance across sessions (extend OpenCodeServerOwner.withServer to adapter startSession), lengthen the 30s idle TTL / reference-count across threads, and serialize startups behind a mutex so probes don't race turn starts.

Diagnosed from live-DB forensics; agent harness openrouter/meta/muse-spark-1.3-contributor via T3 Code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions