Skip to content

Delete operation index rows only for re-exported spans - #13

Merged
RhysSullivan merged 1 commit into
mainfrom
fix/fts-reingest-only
Oct 10, 2026
Merged

RhysSullivan merged 1 commit into
mainfrom
fix/fts-reingest-only

Conversation

@RhysSullivan

Copy link
Copy Markdown

Every trace export deleted its spans' rows from span_operation_fts before inserting them. That table names a span only in UNINDEXED columns, so each delete scanned the whole index: an export's cost grew with everything already stored.

On a 572 MB database from one Executor E2E run (134k spans), a one-span export took 35 ms instead of 2 ms, and 16 concurrent 20-span exports stored 353 spans/s instead of about 1,000. The collector's ingest queue filled and it refused thousands of exports per run.

Now ingest checks each span's primary key first and deletes index rows only for spans that were already stored. New spans, almost all of them, are only inserted. A test re-exports a span with the same and a changed name and checks the index holds one row for it.

@RhysSullivan
RhysSullivan marked this pull request as ready for review October 10, 2026 19:17
@RhysSullivan
RhysSullivan merged commit 45c0e60 into main Oct 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant