Files
inbuxa-server/crates
jcoffey-dev 9232662913
ci / fork-checks (pull_request) Failing after 47s
ci / build (pull_request) Successful in 4m55s
Trace search: index event type and queue id as integers
The trace index task wrote the event type (its name) and the queue id as
text, but the tracing search index types both as integers on every
backend: BIGINT on PostgreSQL and MySQL, long on Elasticsearch. On
PostgreSQL every batch holding a trace document failed with "cannot
convert between the Rust type String and the Postgres type int8", and
since a batch writes trace and email documents together, email indexing
stalled behind it.

The document is now built by trace_search_document(), which writes:

- the event type as the opening event's numeric id, the event
  x:Trace/query's event filter already matches on;
- the queue id as an integer, the first one the trace names;
- every queue id into the keywords as well, since the column holds one
  value and an SMTP session can queue several messages.

index_keyword() replaced the field on every call, so before this only the
last event type and queue id survived anyway.

x:Trace/query's queueId filter parses the id (a string, or now a number)
and matches the column or the keywords, so a session is found by any of
its queue ids on every backend. The monitoring spec says what is indexed.

Traces indexed before this on the built-in index keep their text values;
the reindexTelemetry maintenance task rebuilds them.

Tests: the search store suite builds trace documents with the index
task's code, indexes them and finds them by queue id, event type and
keyword (Sqlite, PostgreSQL, MySQL); the monitoring suite finds a real
trace by queueId through x:Trace/query.
2026-09-24 07:29:08 -07:00
..
2026-09-22 16:57:06 -07:00
2026-09-22 16:57:06 -07:00
2026-09-22 16:57:06 -07:00
2026-09-22 16:57:06 -07:00
2026-09-22 16:57:06 -07:00
2026-09-22 16:57:06 -07:00
2026-09-22 16:31:25 -07:00
2026-09-22 16:57:06 -07:00
2026-09-22 16:57:06 -07:00
2026-09-22 23:04:59 -07:00