sql_materialize holds the per-session scratch lock for the whole remote source read, blocking all other scratch work
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 30/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- sql, typescript
- Bereich
- databases, performance
Rechercherichtung
Start in packages/opencode/src/altimate/tools/sql-materialize.ts around lines 373-380 and 472-480 to see which work sits inside withScratchConnection, then read exclusive() and the per-session queue in packages/opencode/src/altimate/native/connections/scratch.ts. Done means preflight and the source read run outside the lock, only the write phase takes it, and a SELECT 1 on scratch returns in under a second during a slow materialize. The fix changes concurrency semantics, so confirm the design with maintainers first.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
While one sql_materialize reads from a slow remote source, every other scratch operation in the session (sql_execute on scratch, sql_check, schema_inspect, another sql_materialize from a different source) queues behind it, including calls from sub-agents.
Mechanism
sql_materializerunspreflight()andexecuteSource()against the remote source insidewithScratchConnection(...)(packages/opencode/src/altimate/tools/sql-materialize.ts:373-380).- That callback is
exclusive()(packages/opencode/src/altimate/native/connections/scratch.ts:107), a single promise chain per root session shared by all sub-agents (:51-61,:170). - Only the write phase (
BEGIN/CREATE/INSERT/COMMIT,sql-materialize.ts:472-480) needs the lock. - Reported tool
durationMsincludes queue time, which also misleads timing analysis.
Evidence
Recorded sessions:
- One session was blocked for 1,464 s: three SQLite reads that take 0.6 s alone, issued from 4 parallel sub-agents, all finished together with a multi-minute remote read.
- Other blocks of 706, 404, 376, 129 and 43 s; 10,753 call-seconds of waiting across 7 sessions, none of which produced a correct answer.
- Up to 96 scratch calls in flight at once, completing in bursts; one-row
COUNT(*)queries waited 140-280 s. - In another set of sessions 824 s of queueing across 59 sessions; a 4-row lookup waited 115 s behind an unrelated materialization; a 6-row aggregate took 48.7 s because it queued behind a 48.3 s materialization; an estimated 370 s of wall time lost in 89 generations.
Impact
Time (and, under a time budget, answers): it prevents fan-out from running in parallel and adds directly to budget pressure. Observed with both Claude Opus and gpt-5.6-sol sessions, worst under sub-agent fan-out.
Proposed fix
- Run preflight and the source read outside the lock (stream to a staging file or buffer); take
exclusive()only for the write phase. - Serve read-only scratch queries on separate DuckDB connections to the same file so reads do not queue behind writes.
- Report
queue_msandexec_msseparately in tool metadata and traces.
Acceptance check
- Test: while a materialize from a deliberately slow source is running, a
SELECT 1on scratch from another sub-agent returns in under 1 s. - Two concurrent materializations from different sources overlap their read phases.
Related: #1479 (Mongo byte-bounded reads fetched one document per round trip; fix in #1480).
- Vorherrschende Sprache
- TypeScript
- Sterne
- 812
- Forks
- 123
- Ø Merge
- 1 T. 14 Std.
- Gemergte PRs (30 T.)
- 88
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus AltimateAI/altimate-code
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
AltimateAI/altimate-code#1573 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
AltimateAI/altimate-code#1572 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
AltimateAI/altimate-code#1454 ·
Maintainer antworten meist innerhalb von 1 Tag
-
test: MCP tests fail when the developer's ~/.claude.json has MCP servers (HOME is not sandboxed)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
AltimateAI/altimate-code#1386 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
AltimateAI/altimate-code#1384 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in AltimateAI/altimate-code
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
chaitin/MonkeyCode#1437 ·
Maintainer antworten meist innerhalb von 1 Tag
-
rtdb-info-connected-order test: unhandled 'connection is closed' rejection fails the CLI suiteOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 69/100
carbon-design-system/carbon-ai-chat#2615 ·
Maintainer antworten meist innerhalb von 1 Tag
-
e2e-failure ready-to-code
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
redhat-developer/rhdh-plugin-export-overlays#4486 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug]: fileUploadMatrix.test.ts URL case does a real DNS lookup and fails offlineEvtl. vergeben @r2jaff hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
ComposioHQ/composio#5054 ·
Maintainer antworten meist innerhalb von 1 Tag