Area: ingest — latent resource growth · found via TODO sweep
Issue: the ingest worker spawns one tableLoop goroutine per distinct table and never reaps them — they live for the process lifetime. Safe today (table names bounded: schema-validated, in-process publishers only, DontListen:true). But once remote/untrusted publishers can create arbitrary table cardinality, this is unbounded goroutine growth.
Note: the in-code TODO(#191) references a closed issue (#191, per-table batching, shipped); the remaining work (idle-reaping + route/teardown coordination) wasn't separately tracked. This is that tracker.
Scope: idle-reaping + teardown coordination for tableLoops before supporting remote/untrusted publishers. Prerequisite for multi-tenant #214 / scoped ingest #235.
Found via codebase TODO sweep, 2026-06-04 (internal/ingest/worker.go:223).
Area: ingest — latent resource growth · found via TODO sweep
Issue: the ingest worker spawns one
tableLoopgoroutine per distinct table and never reaps them — they live for the process lifetime. Safe today (table names bounded: schema-validated, in-process publishers only,DontListen:true). But once remote/untrusted publishers can create arbitrary table cardinality, this is unbounded goroutine growth.Note: the in-code
TODO(#191)references a closed issue (#191, per-table batching, shipped); the remaining work (idle-reaping + route/teardown coordination) wasn't separately tracked. This is that tracker.Scope: idle-reaping + teardown coordination for
tableLoops before supporting remote/untrusted publishers. Prerequisite for multi-tenant #214 / scoped ingest #235.Found via codebase TODO sweep, 2026-06-04 (
internal/ingest/worker.go:223).