Jaeger
v2.21.0ObservabilityA feature-rich release with breaking API and configuration changes, expanded experimental query and storage capabilities, and many correctness fixes. It also includes routine dependency updates.
Action needed (1)
breakingThe
searchdepthconstraintQuery handling caps
searchdepthat 10000 and rejects negative values.
Check if affected (4)
breakingRemoval of the
v1 http endpointsApplies if you use
v1 http endpoints.The query component removes the
v1 http endpointsthat the UI no longer calls.breakingThe
ai.configuration, replaced byenable_mcp ai.mcp Applies if you configure
ai..enable_mcp The configuration replaces
ai.with an optionalenable_mcp ai.config block.mcp breakingElasticsearch configuration key validation
Applicability is not stated in the release notes.
Startup now rejects five unsupported Elasticsearch configuration keys.
breakingStorage backend query validation
Applicability is not stated in the release notes.
The query component rejects searches that the storage backend cannot serve.
All 64 other recorded changesfixes 29 · additions 18 · value changes 10 · constraints 3 · renames 2 · defaults 1 · removals 1
fixes (29)
- * Fix(memory): match unset-status spans in error=false trace search ([@hharshhsaini](https://github.com/hharshhsaini) in [#9096](https://github.com/jaegertracing/jaeger/pull/9096))
- * Fix(anonymizer): register the gogo codec ([@DsThakurRawat](https://github.com/DsThakurRawat) in [#9540](https://github.com/jaegertracing/jaeger/pull/9540))
- * Fix(es): surface failed _msearch items instead of dropping traces silently ([@hharshhsaini](https://github.com/hharshhsaini) in [#9008](https://github.com/jaegertracing/jaeger/pull/9008))
- * Fix(mcp): use inclusive bound for critical path child search ([@Harizz076](https://github.com/Harizz076) in [#9174](https://github.com/jaegertracing/jaeger/pull/9174))
- * Fix(anonymizer): read the writer's zero-span capture without panicking ([@DsThakurRawat](https://github.com/DsThakurRawat) in [#9528](https://github.com/jaegertracing/jaeger/pull/9528))
- * Validate targetsamplespersecond is positive ([@Atul-Koundal](https://github.com/Atul-Koundal) in [#9379](https://github.com/jaegertracing/jaeger/pull/9379))
- * Fix(es-index-cleaner): quote index prefix in index name pattern ([@DsThakurRawat](https://github.com/DsThakurRawat) in [#9525](https://github.com/jaegertracing/jaeger/pull/9525))
- * Fix(mcp): respect search_depth when maxresults is unlimited (0) ([@shashankvarma499](https://github.com/shashankvarma499) in [#9517](https://github.com/jaegertracing/jaeger/pull/9517))
- * Es tracestore: set flags("none") on tag regexpquery (#9387) ([@SHIVANSH-ux-ys](https://github.com/SHIVANSH-ux-ys) in [#9454](https://github.com/jaegertracing/jaeger/pull/9454))
- * Fix(otel-demo): upgrade opensearch to 3.7.0 ([@jkowall](https://github.com/jkowall) in [#9397](https://github.com/jaegertracing/jaeger/pull/9397))
- * Fix(es): clear the span writer's service cache in purge ([@ysh-bot](https://github.com/ysh-bot) in [#9416](https://github.com/jaegertracing/jaeger/pull/9416))
- * Fix(telemetry): trace the jaeger_storage extension ([@ysh-bot](https://github.com/ysh-bot) in [#9414](https://github.com/jaegertracing/jaeger/pull/9414))
- * Fix(otel-demo): harden dashboards rollout diagnostics ([@jkowall](https://github.com/jkowall) in [#9393](https://github.com/jaegertracing/jaeger/pull/9393))
- * Fix(query): name server spans after the route when middleware copies the request ([@ysh-bot](https://github.com/ysh-bot) in [#9406](https://github.com/jaegertracing/jaeger/pull/9406))
- * Fix(es): bound service and operation query lookback ([@ekagra1602](https://github.com/ekagra1602) in [#9400](https://github.com/jaegertracing/jaeger/pull/9400))
- * Fix(mcp): cap read_skill output at max_read_file_size ([@CedricConday](https://github.com/CedricConday) in [#8993](https://github.com/jaegertracing/jaeger/pull/8993))
- * Fix(clickhouse): apply config defaults at unmarshal so explicit zeros survive ([@ysh-bot](https://github.com/ysh-bot) in [#9345](https://github.com/jaegertracing/jaeger/pull/9345))
- * Fix(otel-demo): expand opensearch volume online ([@jkowall](https://github.com/jkowall) in [#9315](https://github.com/jaegertracing/jaeger/pull/9315))
- * Fix(ai-gateway): preserve message boundaries when reading acp over websocket ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9296](https://github.com/jaegertracing/jaeger/pull/9296))
- * Fix(memory): return copies of stored traces, not references ([@ysh-bot](https://github.com/ysh-bot) in [#9261](https://github.com/jaegertracing/jaeger/pull/9261))
- * Fix(es): return non-error traces for error=false search ([@hharshhsaini](https://github.com/hharshhsaini) in [#9210](https://github.com/jaegertracing/jaeger/pull/9210))
- * Fix(apiv3): return notfound for missing trace ([@ADITYA-CODE-SOURCE](https://github.com/ADITYA-CODE-SOURCE) in [#9151](https://github.com/jaegertracing/jaeger/pull/9151))
- * Fix(es): add spanid tie-breaker to trace-read search_after pagination ([@hharshhsaini](https://github.com/hharshhsaini) in [#9063](https://github.com/jaegertracing/jaeger/pull/9063))
- * Fix(elasticsearch): use post instead of get for _msearch requests ([@magic-peach](https://github.com/magic-peach) in [#9027](https://github.com/jaegertracing/jaeger/pull/9027))
- * Fix(es): restore gzip compression of elasticsearch request bodies ([@iammdzaidalam](https://github.com/iammdzaidalam) in [#9072](https://github.com/jaegertracing/jaeger/pull/9072))
- * Fix(query): let membership against an attribute reach the backend untyped ([@ysh-bot](https://github.com/ysh-bot) in [#9459](https://github.com/jaegertracing/jaeger/pull/9459))
- * Fix(es): pin the flags on the regexp query ([@DsThakurRawat](https://github.com/DsThakurRawat) in [#9383](https://github.com/jaegertracing/jaeger/pull/9383))
- * Fix(es): write the data stream @timestamp as an rfc 3339 string ([@Me-Priyank](https://github.com/Me-Priyank) in [#9363](https://github.com/jaegertracing/jaeger/pull/9363))
- * Fix(es): treat a bulk 409 as an idempotent success in the sync writer ([@Me-Priyank](https://github.com/Me-Priyank) in [#9113](https://github.com/jaegertracing/jaeger/pull/9113))
additions (18)
- * Feat(es): accept --feature-gates in esmapping-generator and es-rollover init ([@ysh-bot](https://github.com/ysh-bot) in [#9546](https://github.com/jaegertracing/jaeger/pull/9546))
- * Feat(es): add optional index.mapping.total_fields.limit to the span index template ([@zarna1parekh](https://github.com/zarna1parekh) in [#9523](https://github.com/jaegertracing/jaeger/pull/9523))
- * Feat(ai-gateway): send configurable headers on the acp agent handshake ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9395](https://github.com/jaegertracing/jaeger/pull/9395))
- * Fix(otel-demo): allow explicit opensearch recovery waiver ([@jkowall](https://github.com/jkowall) in [#9313](https://github.com/jaegertracing/jaeger/pull/9313))
- * Fix(otel-demo): add tested opensearch recovery gate ([@jkowall](https://github.com/jkowall) in [#9306](https://github.com/jaegertracing/jaeger/pull/9306))
- * Feat(es): add optional poison-pill drop for synchronous writes ([@ysh-bot](https://github.com/ysh-bot) in [#9109](https://github.com/jaegertracing/jaeger/pull/9109))
- * Feat(es): warn on misaligned synchronous-write batch sizing ([@ysh-bot](https://github.com/ysh-bot) in [#9098](https://github.com/jaegertracing/jaeger/pull/9098))
- * Feat(es): index attribute values as numbers and order predicates on them ([@ysh-bot](https://github.com/ysh-bot) in [#9321](https://github.com/jaegertracing/jaeger/pull/9321))
- * Feat(ai-gateway): serve both mcp mounts from one server and reap its sessions ([@Nabil-Salah](https://github.com/Nabil-Salah) in [#9216](https://github.com/jaegertracing/jaeger/pull/9216))
- * Feat(es): render and create span data-stream composable templates ([@Me-Priyank](https://github.com/Me-Priyank) in [#8991](https://github.com/jaegertracing/jaeger/pull/8991))
- * Feat(es): implement the structured query filter ([@ysh-bot](https://github.com/ysh-bot) in [#9350](https://github.com/jaegertracing/jaeger/pull/9350))
- * Feat(query): convert a filter between the wire and the ast ([@ysh-bot](https://github.com/ysh-bot) in [#9355](https://github.com/jaegertracing/jaeger/pull/9355))
- * Feat(query): add a fluent builder for structured query filters ([@yurishkuro](https://github.com/yurishkuro) in [#9354](https://github.com/jaegertracing/jaeger/pull/9354))
- * Feat(jaegerquery): serve operator skills from ai.skills_dir under custom/ ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9169](https://github.com/jaegertracing/jaeger/pull/9169))
- * Feat(ai-gateway): announce the session-scoped mcp endpoint to the sidecar over http ([@Nabil-Salah](https://github.com/Nabil-Salah) in [#9009](https://github.com/jaegertracing/jaeger/pull/9009))
- * Feat(es): add write_mode config to select synchronous elasticsearch writes ([@ysh-bot](https://github.com/ysh-bot) in [#9093](https://github.com/jaegertracing/jaeger/pull/9093))
- * Feat(query): add pluggable pre/post query interceptor extension point ([@ysh-bot](https://github.com/ysh-bot) in [#9024](https://github.com/jaegertracing/jaeger/pull/9024))
- serve a filter query in the shape the backend understands
value changes (10)
- * Feat(clickhouse): promote clickhouse storage feature gate to stable ([@ysh-bot](https://github.com/ysh-bot) in [#9058](https://github.com/jaegertracing/jaeger/pull/9058))
- * Feat(mcptools): add gen_ai.tool.call.arguments/result to the gateway's mcp tool-call span ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9304](https://github.com/jaegertracing/jaeger/pull/9304))
- * Feat(storage): let remote storage report its search capabilities ([@ysh-bot](https://github.com/ysh-bot) in [#9269](https://github.com/jaegertracing/jaeger/pull/9269))
- * Feat(jaegerai): add gen_ai.tool.call.arguments/result to sidecar tool-call spans ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9011](https://github.com/jaegertracing/jaeger/pull/9011))
- * Feat(es): add deterministic content-hash _id for idempotent span writes ([@ysh-bot](https://github.com/ysh-bot) in [#9094](https://github.com/jaegertracing/jaeger/pull/9094))
- * Feat(query): return a context from query interceptor hooks ([@ysh-bot](https://github.com/ysh-bot) in [#9082](https://github.com/jaegertracing/jaeger/pull/9082))
- * Feat(query): show a query interceptor every predicate as a filter ([@ysh-bot](https://github.com/ysh-bot) in [#9360](https://github.com/jaegertracing/jaeger/pull/9360))
- * Feat(storage): carry the filter and its capabilities over remote storage ([@ysh-bot](https://github.com/ysh-bot) in [#9358](https://github.com/jaegertracing/jaeger/pull/9358))
- * Feat(storage): let a reader declare which filters it evaluates ([@ysh-bot](https://github.com/ysh-bot) in [#9356](https://github.com/jaegertracing/jaeger/pull/9356))
- * Chore(deps): update dependency prometheus-client to v0.26.0 ([@renovate[bot]](https://github.com/apps/renovate) in [#9501](https://github.com/jaegertracing/jaeger/pull/9501))
constraints (3)
- * Feat(mcp): let search_traces omit the service name ([@ysh-bot](https://github.com/ysh-bot) in [#9262](https://github.com/jaegertracing/jaeger/pull/9262))
- * Feat(storage): let backends declare that search can omit the service name ([@ysh-bot](https://github.com/ysh-bot) in [#9256](https://github.com/jaegertracing/jaeger/pull/9256))
- * Feat(query): accept a structured filter on api_v3 trace search ([@ysh-bot](https://github.com/ysh-bot) in [#9359](https://github.com/jaegertracing/jaeger/pull/9359))
renames (2)
- * Feat(featuregate): normalize Jaeger gate names ([@maindevhoon](https://github.com/maindevhoon) in [#9037](https://github.com/jaegertracing/jaeger/pull/9037))
- * Feat(es): rewire sniffing.enabled and log_level onto the esclient transport ([@ysh-bot](https://github.com/ysh-bot) in [#9077](https://github.com/jaegertracing/jaeger/pull/9077))
defaults (1)
- * Fix(query): default search_depth in api_v3 grpc handler ([@vyncint](https://github.com/vyncint) in [#9100](https://github.com/jaegertracing/jaeger/pull/9100))
removals (1)
- * Fix(storage): remove the duplicate otelgrpc handler on the storage client ([@ysh-bot](https://github.com/ysh-bot) in [#9417](https://github.com/jaegertracing/jaeger/pull/9417))
A weekly email arrives when a release needs action. Like the breaking changes in this release.