What jaegertracing/jaeger shipped
Written by FoxPlug from the repository's own releases; not affiliated with Jaegertracing. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/jaegertracing/jaeger; Jaegertracing did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Release v2.23.0 shipped with the backend changes, breaking changes and fixes listed in its notes. Release
- The legacy GET /api/traces/{traceID} and POST /api/transform endpoints were removed after being kept in v2.23.0. Pull request #10048
- The
find_tracesMCP tool now takes only a single sql input, and calls sending the old structured inputs are refused by the schema. Pull request #10083 - The
search_tracesMCP tool was renamed tofind_traceswith no alias and unchanged input and output schemas. Pull request #10073 - A
find_spansMCP tool was added so spans matching a predicate can be fetched across many traces without a two-call detour. Pull request #9643 - Query gRPC and MCP handlers now recover from panics so one bad request no longer takes the process down. Pull request #9766
- Shared span ID deduplication in query now runs in linear time instead of rescanning spans per server span. Pull request #9764
- The Elasticsearch writer now stores non-finite doubles as OTLP/JSON string tags instead of dropping the span. Pull request #9912
- The MCP endpoint is served without sessions, and the
streamable_http.statelessoption was removed so configs still setting it fail at startup. Pull request #10053 - The release workflow now verifies published assets and images after it finishes instead of relying on manual checks. Pull request #10036
Why it matters
This week combines a release with a set of breaking changes to the MCP tools and AI query endpoint that callers and configurations must account for. It also adds a new span search tool and hardens query serving against panics and slow deduplication. Operators upgrading should read the release notes and check their configuration for removed options.
Changelog entry
- Release v2.23.0. Release
- Remove the legacy /api/traces and /api/transform endpoints. Pull request #10048
- Change
find_tracesto take only a sql statement; structured inputs are refused. Pull request #10083 - Rename the
search_tracesMCP tool tofind_traces. Pull request #10073 - Add the
find_spansMCP tool. Pull request #9643 - Recover from panics in Query gRPC and MCP handlers. Pull request #9766
- Deduplicate shared span IDs in linear time. Pull request #9764
- Store non-finite doubles in Elasticsearch as OTLP/JSON string tags. Pull request #9912
- Serve the MCP endpoint without sessions and remove the stateless option. Pull request #10053
- Apply the ai.auth gate to the turn-scoped MCP endpoint. Pull request #10059
- Verify published assets and images after the release workflow. Pull request #10036
- Return an error when a Badger data directory cannot be created. Pull request #10071
Jaeger v2.23.0 is out. The MCP endpoint now runs without sessions, find_traces takes only a sql statement, search_traces is renamed to find_traces, and a new find_spans tool lands. Query handlers also recover from panics now.
Jaeger v2.23.0 has been released. Alongside it, several changes landed for people using the MCP tools and the AI query endpoint: find_traces now takes a single sql statement, search_traces is renamed to find_traces, a new find_spans tool is available, and the turn-scoped MCP endpoint no longer uses sessions, with the stateless option removed. Query gRPC and MCP handlers now recover from panics, span ID deduplication runs in linear time, and the Elasticsearch writer stores non-finite doubles as string tags instead of dropping spans. The release workflow also verifies published assets and images after it finishes.
Week of October 26, 2026
What shipped
- The v3 HTTP API now indents JSON responses when prettyPrint is set to any value other than false, matching the v1 API's 4-space indent. Pull request #9990
- The
get_trace_topologyandget_critical_pathtrace walks are now guarded against duplicate span IDs, which could previously drive the walk into a cycle from the root. Pull request #9763 - Get_trace_topology now exposes
total_span_count, so spans dropped beyondmax_span_details_per_requestare no longer silently lost to the caller. Pull request #8530 - Filter nesting depth is now checked before decoding
api_v3query.filter and query.orderBy parameters, instead of only inside the expression conversion. Pull request #10006 - Captured identity headers are now forwarded onto the ACP agent handshake instead of only the static ai.agent_headers. Pull request #10007
- The last callers of GET /api/traces/{traceID} in the repository move to GET /api/v3/traces/{
trace_id}, so removing the v1 endpoint will not break them. Pull request #10004 - The jaeger.clickhouse and storage.clickhouse feature gates are removed from the ClickHouse storage factory. Pull request #9988
- The OCB build is wired to the Workspace Overwrite pattern so the generated binary keeps Jaeger's own CLI commands such as elasticsearch-mappings. Pull request #8871
- Manual release runs can now build a given ref and flag commits past the tag, after several releases shipped binaries from a later commit than the tag. Pull request #9985
- The release prepare.sh and start.sh scripts are hardened against mistakes such as a wrong release branch, a missing jaeger-ui tag falling back to UI main, and duplicate tracking issues. Pull request #9986
Why it matters
This week fixes several correctness problems people hit in daily use: trace walks no longer loop on duplicate span IDs, truncated topology responses now report total_span_count, and deep filter nesting is rejected before decoding. The v3 HTTP API gained prettyPrint, and the remaining v1 trace callers moved to the v3 endpoint ahead of its removal. Release and CI work also reduces the chance of publishing builds from the wrong commit.
Changelog entry
- Feat(query): support prettyPrint on the v3 HTTP API Pull request #9990
- Fix(mcp): guard trace walks against duplicate span IDs Pull request #9763
- Fix(jaegermcp): expose
total_span_countinget_trace_topologyPull request #8530 - Fix(query): check filter nesting depth before decoding
api_v3parameters Pull request #10006 - Feat(query): forward captured identity headers onto the ACP agent handshake Pull request #10007
- Chore(query): move the last v1 trace callers to the v3 API Pull request #10004
- Fix(storage): remove unused clickhouse feature gates Pull request #9988
- Feat(ocb): wire build-ocb to the Workspace Overwrite pattern Pull request #8871
- Fix(ci): let manual release runs build a given ref and flag commits past the tag Pull request #9985
- Fix(release): harden prepare.sh and start.sh against release-manager mistakes Pull request #9986
- Fix(ci): restore the ClickHouse metrics snapshot filename Pull request #9951
- Ci(publish): stop trusting fork CI summary artifacts Pull request #9998
This week: v3 HTTP API supports prettyPrint, trace topology walks are guarded against duplicate span IDs, get_trace_topology reports total_span_count, and the last v1 trace callers move to the v3 API. Release runs can now build a given ref and flag commits past the tag.
This week in Jaeger: the v3 HTTP API now honors prettyPrint with the same 4-space indent as v1. Trace topology and critical path walks are guarded against duplicate span IDs, and get_trace_topology now reports total_span_count so truncated responses are visible to callers. Filter nesting depth is checked before api_v3 query parameters are decoded. Elsewhere, the last v1 trace endpoint callers in the repository moved to the v3 API ahead of its removal, unused ClickHouse feature gates were removed, and manual release runs can now build a given ref and flag commits past the tag.
Week of October 19, 2026
What shipped
- Added the internal/sqlquery package, a SQL query surface that compiles to trace search filters. Pull request #9922
- The MCP
search_tracestool now accepts a SQL statement as input. Pull request #9925 - Added ai.auth configuration to put an authenticator in front of the AI endpoints on the query port. Pull request #9908
- Moved the AI configuration block and route mounting into jaegerai. Pull request #9907
- Bounded distributed trace searches in ClickHouse so small searches no longer materialize a large hash join. Pull request #9882
- Bound GetTraces time bounds at nanosecond precision in ClickHouse instead of truncating to seconds. Pull request #9894
- Regex filter patterns now honor the ^ and $ anchors and the (?i) case fold. Pull request #9923
- The legacy metrics API now rejects non-positive lookback, step and ratePer. Pull request #9863
- The duration parser now rejects values that overflow. Pull request #9877
- Non-finite float attributes are rendered as strings in the JSON UI model. Pull request #9901
Why it matters
This week adds a SQL input path for trace search, both as a package and in the MCP search_traces tool, and puts an authenticator in front of the AI endpoints. On the ClickHouse side, trace searches are bounded and time bounds keep nanosecond precision, while the query API rejects invalid metrics parameters and overflowing durations.
Changelog entry
- Add internal/sqlquery, a compiler from read-only SQL to trace search filters. Pull request #9922
- MCP
search_tracesaccepts a SQL statement in place of structured inputs. Pull request #9925 - Add ai.auth to gate the AI chat, telemetry MCP and capability flag with an authenticator. Pull request #9908
- Move the AI configuration and route mounting into jaegerai. Pull request #9907
- Bound distributed ClickHouse trace searches to avoid large hash joins. Pull request #9882
- Bind GetTraces time bounds at nanosecond precision in ClickHouse. Pull request #9894
- Name the ClickHouse search stages and share one rows loop. Pull request #9899
- Honor ^ and $ anchors and (?i) case folding in regex filter patterns. Pull request #9923
- Reject non-positive lookback, step and ratePer in the metrics API. Pull request #9863
- Reject durations that overflow in the duration units parser. Pull request #9877
- Render non-finite float attributes as strings in the JSON UI model. Pull request #9901
- Start a new text message after each tool call in the Ask Jaeger panel. Pull request #9879
This week: a SQL query surface for trace search and SQL input in the MCP search_traces tool, ai.auth to gate the AI endpoints, bounded ClickHouse trace searches with nanosecond time bounds, regex anchors and case folding, and stricter validation for metrics parameters and duratio
This week in Jaeger: a SQL query surface that compiles to trace search filters, and the MCP search_traces tool now accepts a SQL statement. An ai.auth setting can put an authenticator in front of the AI endpoints, and the AI configuration and routes moved into jaegerai. ClickHouse searches are bounded for distributed tables and GetTraces time bounds keep nanosecond precision. Regex filters honor ^ and $ anchors and (?i) case folding. The legacy metrics API rejects non-positive lookback, step and ratePer, durations that overflow are rejected, and non-finite float attributes render as strings.
Week of October 12, 2026
What shipped
- Creating the ClickHouse schema now requires an explicit
table_engineblock, so a backend withcreate_schematrue no longer starts without one, a breaking change. Pull request #9813 - Added
streamable_httptransport options to ai.mcp so MCP clients work across multiple query replicas behind a load balancer without session affinity. Pull request #9857 - Added ai.mcp.disable_localhost_protection so the telemetry MCP endpoint stops returning 403 invalid Host header when query runs behind a reverse proxy or service-mesh sidecar. Pull request #9849
- The memory store now evaluates the phrase and fulltext text-search operators, and they are covered by the shared end-to-end filter test suite. Pull request #9791
- Storage auth extension references now resolve deterministically, so a configured authenticator name no longer matches more than one extension when names overlap. Pull request #9772
- The gRPC tenancy guard now rejects requests carrying a single empty tenant value when multi-tenancy is enabled and no allow-list is configured, matching the HTTP handler. Pull request #9768
- The query API v3 trace endpoints now drop resource and scope spans left empty after duplicate spans are removed by deduplication. Pull request #9836
- The legacy dependencies endpoint now rejects non-positive lookback values instead of returning an empty result for zero or a 500 for negative values. Pull request #9832
- Cassandra duration search now actually stops at the configured search depth instead of continuing to query older hourly buckets. Pull request #9853
- The multiple-trace integration test fixtures now have distinct start times, fixing a Cassandra search test that failed on some UTC days. Pull request #9851
Why it matters
This week several correctness fixes landed in storage, tenancy and query paths that change behavior for existing deployments. The ClickHouse schema change is breaking: a backend with create_schema enabled must now declare its table engine. MCP users running query behind a proxy or load balancer get options that address the session and Host header failures.
Changelog entry
- Clickhouse: require an explicit
table_engineblock when creating the schema;create_schemawithout it no longer starts Pull request #9813 - Mcp: add
streamable_httptransport options to ai.mcp for replicas behind load balancers without session affinity Pull request #9857 - Mcp: add ai.mcp.disable_localhost_protection for reverse proxy and service-mesh deployments Pull request #9849
- Memory: evaluate phrase and fulltext text-search operators and cover them in the shared filter test suite Pull request #9791
- Storage: resolve auth extension references deterministically when extension names overlap Pull request #9772
- Tenancy: reject empty tenant values on gRPC when no allow-list is configured Pull request #9768
- Query: drop resource and scope spans emptied by span deduplication on
api_v3trace endpoints Pull request #9836 - Query: reject non-positive lookback values on the legacy dependencies endpoint Pull request #9832
- Cassandra: stop duration search at the configured search depth Pull request #9853
- Integration: give the multiple-trace fixtures distinct start times to fix a date-dependent Cassandra test Pull request #9851
- Deps: update golangci-lint to v2.14.0 Pull request #9718
This week: a breaking ClickHouse change requiring an explicit table_engine block, new MCP options for load-balanced and proxied query deployments, phrase and fulltext filters in the memory store, and fixes to auth resolution, tenancy checks and deduplication.
What shipped in Jaeger this week. ClickHouse schema creation now requires an explicit table_engine block, a breaking change for backends with create_schema enabled. The MCP endpoint gained streamable_http transport options for multiple query replicas behind a load balancer without session affinity, plus a setting to disable localhost protection for proxied deployments. The memory store now evaluates phrase and fulltext search operators. Fixes include deterministic resolution of storage auth extension references, stricter rejection of empty tenant values on gRPC, dropping empty resource spans after deduplication, rejecting non-positive lookback on the dependencies endpoint, and stopping Cassandra duration search at the configured depth.
Week of October 5, 2026
What shipped
- Version 2.22.0 was released with the changes listed in its release notes. Release
- Jaeger-idl was bumped to v0.14.0, adding a Capabilities service to
api_v3that exposes the storage backend's search capabilities. Pull request #9802 - Storage search capabilities are now served over
api_v3gRPC. Pull request #9803 - Storage search capabilities are now served over
api_v3HTTP through a route and handler for the capabilities binding. Pull request #9804 - The ClickHouse reader now routes structured query filters to SQL WHERE clauses instead of folding filters down to a legacy conjunctive shape. Pull request #9701
- The Elasticsearch and OpenSearch reader now declares span search, span sorting and pagination capabilities. Pull request #9729
- The Elasticsearch and OpenSearch span search id tie-breaker is now off by default, so span search no longer sorts on document id after the ordering terms. Pull request #9783
- The Elasticsearch writer now records bulk request size metrics covering how many bulk requests are sent and how large they are. Pull request #9787
- Apache Thrift was updated to v0.25.0, addressing oversized list headers in the generated decoders. Pull request #9756
- Published container images now run with a non-root primary group instead of the root group. Pull request #9771
Why it matters
This week's release and the milestones behind it make storage behavior visible to API clients, so callers can see what a backend can search before issuing queries. Several fixes also close incorrect or unsafe behavior, including span search sorting, filter routing to SQL, and tracing data paths through remote storage and MCP tool calls. For people running Jaeger, the changes reduce surprising results and harden the storage and container layers.
Changelog entry
- Release v2.22.0. Release
- Build(idl): bump jaeger-idl to v0.14.0, adding the
api_v3Capabilities service. Pull request #9802 - Feat(query): serve storage search capabilities over
api_v3gRPC. Pull request #9803 - Feat(query): serve storage search capabilities over
api_v3HTTP. Pull request #9804 - Feat(clickhouse): route structured query filters to SQL WHERE. Pull request #9701
- Feat(es): declare span search and pagination. Pull request #9729
- Fix(es): turn off the span search id tie-breaker by default. Pull request #9783
- Feat(es): record bulk request size metrics for the Elasticsearch writer. Pull request #9787
- Fix(deps): update Apache Thrift to v0.25.0. Pull request #9756
- Fix(docker): run images with a non-root primary group. Pull request #9771
- Fix(storage): sanitize remote storage exports. Pull request #9062
- Fix(query): treat non-string library attributes as conflicts instead of panicking. Pull request #9765
Release v2.22.0 is out. Storage search capabilities now reach api_v3 over gRPC and HTTP, ClickHouse routes structured filters into SQL WHERE, and ES/OpenSearch no longer tie-break span search by document id by default. Filter tests and PromQL escaping also improved.
Release v2.22.0 is out this week. On top of it, Jaeger now exposes storage search capabilities over both api_v3 gRPC and HTTP, and the ClickHouse reader routes structured query filters into SQL WHERE clauses rather than folding them into a legacy shape. The Elasticsearch and OpenSearch reader declares span search, sorting and pagination capabilities, and the span search document id tie-breaker is now off by default. We also landed fixes for remote storage exports, MCP tool call spans, service name escaping in PromQL matchers, index name escaping in delete requests, and non-root primary groups for published images.
Week of September 28, 2026
What shipped
- RFC 0016 specifies a FindSpans-only
order_bycontract for start time, duration, trace ID and span ID with expression-plus-direction IDL shape and deterministic tie-breakers. Pull request #9667 - Query service validates and binds span ordering, normalizing explicit terms and appending deterministic tie-breakers for effective ordering. Pull request #9669
- Storage gRPC FindSpans client and server implementation forwards ordered terms, span chunks, continuation tokens and search capabilities. Pull request #9670
- API v3 gRPC and HTTP routes expose FindSpans ordering, with invalid terms returning InvalidArgument or HTTP 400. Pull request #9671
- Memory storage executes caller-selected FindSpans ordering and advertises SpanSorting capability. Pull request #9672
- Span search implementation in the Elasticsearch core reader (RFC 0016 M4) with sort lowering for M11. Pull request #9704
- Elasticsearch span sort ties now broken on backing index and document ID with configurable
span_search_tie_break_by_id. Pull request #9720 - Release workflow now drafts GitHub releases automatically when the prepare PR merges, removing a manual step. Pull request #9740
- Elasticsearch configuration no longer accepts top-level
tags_as_fields; users must move it under indices.spans.tags_as_fields. Pull request #9693 - Remote storage service flags removed; jaeger-remote-storage must now configure from confmap-decoded file instead. Pull request #9699
Why it matters
Span ordering is now fully implemented across query, storage gRPC, and backends, allowing callers to retrieve spans in their preferred order. Elasticsearch span search (RFC 0016 M4) progresses toward completion with tie-breaking, and release automation removes manual steps from the release process.
Changelog entry
- RFC 0016 defines FindSpans caller-selected span ordering contract with start time, duration, trace ID and span ID fields. Pull request #9667
- Query service validates and normalizes span ordering with deterministic tie-breakers and order-bound continuation tokens. Pull request #9669
- Storage gRPC implements FindSpans client and server with ordered terms, span chunks and continuation tokens. Pull request #9670
- API v3 exposes FindSpans ordering through gRPC and HTTP with validation of terms and directions. Pull request #9671
- Memory storage executes caller-selected FindSpans ordering and advertises SpanSorting capability. Pull request #9672
- Elasticsearch implements span search in core reader (RFC 0016 M4) with sort lowering. Pull request #9704
- Elasticsearch span sorts now tie-break on backing index and document ID via configurable
span_search_tie_break_by_id. Pull request #9720 - Release workflow automatically drafts GitHub releases when prepare PR merges. Pull request #9740
- Elasticsearch configuration moved
tags_as_fieldsunder indices.spans; top-level setting no longer supported. Pull request #9693 - Remote storage service removes flags; requires confmap-decoded configuration file. Pull request #9699
- Memory storage SamplingStore read methods now use read locks instead of exclusive locks. Pull request #9005
- Fixed malformed error messages in jaegerquery and remotestorage Start() methods. Pull request #8882
Span ordering ships in query, gRPC storage, and memory backend with RFC 0016 contract. Elasticsearch span search progresses (M4) with tie-breaking. Release automation drafts GitHub releases automatically.
This week adds caller-selected span ordering across the query service, gRPC storage layer, and backends, implementing RFC 0016's FindSpans contract with deterministic tie-breakers and order-bound continuation tokens. Elasticsearch span search implementation (RFC 0016 M4) now includes sort tie-breaking on backing index and document ID. Release automation improvements remove manual steps from the release process. Two breaking changes update Elasticsearch configuration structure and remote storage setup.
Week of September 21, 2026
What shipped
- The memory backend now supports FindSpans and search pagination, completing M3 of RFC 0016 Span Search as the first reader to declare SpanSearch capability. Pull request #9611
- The
api_v3FindSpans handler and HTTP route are now available, completing M2 of RFC 0016 Span Search. Pull request #9613 - RFC 0014 page tokens are now defined and returned by paginating readers, establishing the shared format for pagination across storage backends. Pull request #9655
- The
jaeger_storage_writerconnector now handles dead-letter rejection of spans in Elasticsearch, completing RFC 0007 M5. Pull request #9604 - Search query validation moved into the query service, eliminating duplicate validation logic across multiple API handlers. Pull request #9612
- A timeout from gRPC storage v2 configuration is now applied to storage calls, preventing indefinite blocking on remote storage hangs. Pull request #9638
- The native Elasticsearch trace summaries feature gate promoted from Beta to Stable. Pull request #9609
- The structured filters feature gate promoted from Alpha to Beta, enabling RFC 0005 filter syntax by default. Pull request #9607
- RFC 0018 proposes streaming responses for the API v3 HTTP gateway to avoid buffering full result sets. Pull request #9620
- Fixed TracesData.MarshalToSizedBuffer writing to buffer head instead of tail, correcting sized-buffer convention usage. Pull request #9629
Why it matters
Span search moves from interface design into working storage backends, pagination establishes a shared format across readers, and dead-letter handling completes lossless pipeline support. Feature gates advance from experimental to stable as code matures, while infrastructure fixes address timeout handling and buffer serialization.
Changelog entry
- Memory backend now implements FindSpans with pagination support (RFC 0016 M3) Pull request #9611
- Added
api_v3FindSpans gRPC handler and HTTP route (RFC 0016 M2) Pull request #9613 - Defined RFC 0014 page tokens for paginating reader responses Pull request #9655
- Added
jaeger_storage_writerconnector for dead-letter span handling (RFC 0007 M5) Pull request #9604 - Centralized search query validation in query service Pull request #9612
- Apply configured timeout to gRPC storage calls Pull request #9638
- Promoted jaeger.es.nativeTraceSummaries to Stable Pull request #9609
- Promoted jaeger.query.structuredFilters to Beta Pull request #9607
- Changed SearchDepth and PageSize to unsigned in internal query types Pull request #9642
- Added shared pagination integration tests for direct and e2e modes Pull request #9664
Span search reaches memory backend, pagination tokens standardized, and dead-letter handling completes lossless pipelines. Structured filters graduate to beta, native trace summaries to stable.
Week 40 advances RFC 0016 Span Search with FindSpans in memory storage and complete API v3 handlers, while RFC 0014 pagination establishes shared token format across readers. Dead-letter connector completes RFC 0007 lossless pipeline support. Feature gates progress: structured filters to beta, native trace summaries to stable. Fixes improve timeout handling and serialization correctness.
Week of September 14, 2026
What shipped
- Released v2.21.0 with breaking changes including removal of v1 HTTP endpoints, restructured AI MCP configuration, and rejection of unsupported Elasticsearch config keys at startup. Release
- Promoted the omitParentSpanIDReference gate to Beta for Elasticsearch/OpenSearch, controlling whether redundant synthetic CHILD_OF references are stored. Pull request #9586
- Added SearchSpans capability and FindSpans reader method as the first part of RFC 0016 span search implementation. Pull request #9578
- Generalized paginated reader results by replacing span-specific page results with generic PageChunk[T] across FindSpans, FindTraceIDs, and FindTraceSummaries. Pull request #9585
- Added Elasticsearch/OpenSearch support to index attribute values as numbers and order predicates on them instead of lexicographic comparison. Pull request #9321
- Fixed archive trace handling to prevent archiving traces that exist only in archive storage by reading ArchiveTrace requests only from primary storage. Pull request #9391
- Fixed double separator issue when index-prefix already ends with dash in Elasticsearch rollover and index cleaner tools. Pull request #9551
- Added validation to reject non-positive unit-count in jaeger-es-rollover lookback action to prevent cutoff date calculation errors. Pull request #9568
- Updated jaeger-idl to v0.12.0 to include FindSpans RPC entities for RFC 0016 M1. Pull request #9569
- Added labeled trace fixtures and end-to-end coverage tests for built-in query skills detect-n-plus-one and error-root-cause. Pull request #9263
Why it matters
V2.21.0 is released with breaking changes and new span search capabilities. The paginated reader refactoring unifies how results flow through query and storage layers. Elasticsearch attribute indexing as numbers enables range queries to work correctly instead of lexicographically.
Changelog entry
- BREAKING: Removed v1 HTTP endpoints no longer used by the UI Release
- BREAKING: Replaced ai.enable_mcp with optional ai.mcp config block Release
- BREAKING: Reject five unsupported Elasticsearch configuration keys at startup Release
- Promoted omitParentSpanIDReference gate to Beta for Elasticsearch/OpenSearch Pull request #9586
- Added SearchSpans to capabilities and FindSpans to Reader interface (RFC 0016 M2 part 1) Pull request #9578
- Generalized paginated reader results with generic PageChunk[T] Pull request #9585
- Index attribute values as numbers in Elasticsearch/OpenSearch for correct range query ordering Pull request #9321
- Fixed archive trace handling to prevent archiving traces existing only in archive storage Pull request #9391
- Fixed double separator in index-prefix for Elasticsearch rollover and index cleaner Pull request #9551
- Validate non-positive unit-count in jaeger-es-rollover lookback action Pull request #9568
Jaeger v2.21.0 is out. Span search (RFC 0016) is underway, Elasticsearch attributes now index as numbers for range queries, and paginated results are generalized across all reader methods.
Jaeger v2.21.0 ships with breaking changes: v1 HTTP endpoints removed, AI config restructured, and unsupported ES configs rejected at startup. New capabilities include paginated reader results unified across all methods and span search (RFC 0016) implementation starting with RFC 0016 M2. Elasticsearch storage now indexes attribute values as numbers, fixing range queries that previously compared lexicographically.