[codex] Prevent background Git fetches from leaking temp packs#3537

closed7
main
codex/fix-git-fetch-temp-pack-leaks
openedJun 23, 2026byJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 3d ago
16 unresolved threads · Jump to file
Selected thread: apps/server/src/provider/Layers/EventNdjsonLogger.ts:371 — 🟡 **Medium** `Layers/EventNdjsonLogger.ts:368` When a `sink.write` call throws, `drainPending` adds the thread segment to `failedSegments` permanently. Every subsequent drain skips that segment at the `if (failedSegments.has(threadSegment)) continue` check, but still clears all pending records — so a transient write error (temporary disk pressure, short-lived FS error) permanently disables logging for that thread for the remaining store lifetime with no retry or recovery, and silently drops every future record for that thread. Previously, batch write failures did not mark the thread writer permanently failed. Consider removing the `failedSegments` add on write failure (or retrying on the next drain) so transient errors don't permanently block the segment. ```diff } catch (cause) { - failedSegments.add(threadSegment); failures.push({ filePath, cause }); } ``` <details> <summary>🚀 Reply "<strong>fix it for me</strong>" or copy this <strong>AI Prompt</strong> for your agent:</summary> ```text In file @apps/server/src/provider/Layers/EventNdjsonLogger.ts around lines 368-371: When a `sink.write` call throws, `drainPending` adds the thread segment to `failedSegments` permanently. Every subsequent drain skips that segment at the `if (failedSegments.has(threadSegment)) continue` check, but still clears all pending records — so a transient write error (temporary disk pressure, short-lived FS error) permanently disables logging for that thread for the remaining store lifetime with no retry or recovery, and silently drops every future record for that thread. Previously, batch write failures did not mark the thread writer permanently failed. Consider removing the `failedSegments` add on write failure (or retrying on the next drain) so transient errors don't permanently block the segment. ``` </details>
0 / 100 viewed100 files changedLine totals unavailable

apps/server/src/diagnostics/ProcessDiagnostics.ts · File comment

M
macroscopeappBotJul 29, 2026

🟡 Medium

https://github.com/pingdotgg/t3code/blob/58340604f0b7967e7a5a3e532993f3443442d14e/apps/server/src/diagnostics/ProcessDiagnostics.ts#L1

The read function filters only the server PID out of snapshot.processes, so independent Electron roots and the resource-monitor process are returned as server child processes. This inflates processCount, totalRssBytes, and totalCpuPercent, and their depth is clamped to 0 via Math.max(0, entry.depth - 1) even though they are not descendants of the server. The filter at line 78 should restrict the list to the server/backend descendant tree rather than all telemetry processes.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
text
1In file @apps/server/src/diagnostics/ProcessDiagnostics.ts around line 1:
2
3The `read` function filters only the server PID out of `snapshot.processes`, so independent Electron roots and the resource-monitor process are returned as server child processes. This inflates `processCount`, `totalRssBytes`, and `totalCpuPercent`, and their `depth` is clamped to `0` via `Math.max(0, entry.depth - 1)` even though they are not descendants of the server. The filter at line 78 should restrict the list to the server/backend descendant tree rather than all telemetry processes.