Skip to content

Call-site annotations in diagnostics from user-defined operators

Section titled “Call-site annotations in diagnostics from user-defined operators”

Jun 11, 2026 · @IyeOnline, @aljazerzen · #6350

Diagnostics from inside a user-defined operator now include source context from the UDO as well as a “called from here” trace back to the top level pipeline. This makes it possible to immediately locate the offending call when a diagnostic is emitted deep in a nested operator:

from {}
test::error
error: assertion failure
--> <packages/test:error>:2:10
|
2 | assert false
| ^^^^^
|
--> <input>:2:1
|
2 | test::error
| ^^^^^^^^^^^ called from here
|

Previously, such diagnostics contained no location information, making it difficult to associate them with a specific call in the pipeline.

Graceful pipeline shutdown with data draining

Section titled “Graceful pipeline shutdown with data draining”

May 21, 2026 · @aljazerzen

Stopping a pipeline or shutting down the node now drains in-flight data before terminating, instead of discarding it. Source operators receive a graceful stop signal and can finish outstanding work before the pipeline shuts down.

A configurable grace period (tenzir.shutdown-grace-period, default 30 seconds) bounds how long the system waits. After the grace period expires, remaining pipelines are force-killed.

May 16, 2026 · @mavam, @codex · #6191

The new read_auto operator detects common input formats before choosing a reader:

from_stdin {
read_auto
}

Detection dry-runs the actual parsers on a bounded probe of the input. When multiple readers are capable of consuming the bytes, the most specific format wins, e.g., Suricata EVE beats generic NDJSON. Formats that accept arbitrary text, such as space-separated values, are never auto-detected; select their readers explicitly instead.

By default, read_auto fails when detection finds no unique match. Use fallback="lines" or fallback="all" to opt into generic line or whole-input reading for otherwise unknown input.

Correct null handling in bloom-filter context lookups

Section titled “Correct null handling in bloom-filter context lookups”

Jun 3, 2026 · @IyeOnline, @claude

The bloom-filter context no longer matches null values when the filter was populated with empty strings. Now null values no longer match the context.