Skip to content

ingest: per-table worker goroutines (tableLoops) are never reaped — unbounded under untrusted publishers #263

Description

@EricAndrechek

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).

Activity

  1. coderabbitai commented on Jun 4, 2026

    @coderabbitai
    🔗 Related PRs

    #122 - fix(ingest): break infinite-Nak loop on permanent delete errors [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

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

    area/ingestIngest pipeline (Bento, batching, DLQ)enhancementNew feature or requestsecuritySecurity-sensitive issue or fix

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions