github jaegertracing/jaeger v2.20.0
Release v2.20.0

one day ago

Backend Changes

⛔ Breaking Changes

  • Feat(es): promote es.* rotation and index-cleaner feature gates to beta (@ysh-bot in #9018)
  • Feat(es): remove support for elasticsearch v6 (@yurishkuro in #8948)
  • Feat(mcp): merge jaegermcp extension into jaegerquery extension (@Nabil-Salah in #8894)
  • Feat(es): add configurable max_trace_duration and improve time-range design (@yurishkuro in #8840)

✨ New Features

  • Feat(es): add --backend flag to esmapping-generator for opensearch selection (@ysh-bot in #8985)
  • Feat(es): native trace summaries (summaryreader) (@Me-Priyank in #8812)

🐞 Bug fixes, Minor Improvements

  • Feat(es): add synchronous bulk write primitive to the elasticsearch client (@ysh-bot in #8992)
  • Feat(es): gate parentspanid reference-compat write behind a feature gate (@ysh-bot in #9015)
  • Fix(ci): resolve published snapshot shas for oke demo deploy (@FlamingSaint in #8999)
  • feat(jaegerai): add genai span attributes and gateway↔sidecar trace propagation (@SoumyaRaikwar in #8942)
  • Chore(storage): remove expired stable feature gates (@Anujkumar9081 in #8970)
  • Chore(es): scrub lingering olivere references from code comments (@ysh-bot in #8983)
  • Feat(es): migrate template creation to esclient and retire legacy mapping rendering (@Me-Priyank in #8963)
  • Fix(storage): reject mutually-exclusive es auth methods in validate() (@Anujkumar9081 in #8946)
  • Make "spm not configured" error message more explicit (@Saithej2k in #8878)
  • Feat(es): migrate span writes onto an owned bounded bulk indexer (@yurishkuro in #8944)
  • Fix(auth): synchronize fallback token in tokenproviderwithtime closure (@yurishkuro in #8952)
  • Feat(es): migrate service/operation reads onto owned searcher and query ast (@yurishkuro in #8943)
  • [es] add bearer-token and api-key cli flags to es admin tools (rfc 0006 m3.5c) (@yurishkuro in #8939)
  • [es] route admin plane through the shared auth stack (rfc 0006 m3.5b) (@yurishkuro in #8937)
  • Fix(clickhouse): validate decoded trace/span id lengths to prevent panic on corrupted rows (@iammdzaidalam in #8935)
  • Fix(es): apply custom_headers to all elasticsearch clients and honor host override (@iammdzaidalam in #8917)
  • Fix(storage): populate req.getbody before sigv4 signing, not after (@truffle-dev in #8768)
  • Fix(mcp): report total_count and truncated on get_services and get_span_names (@CedricConday in #8902)
  • Fix(sampling): forfeit leader lock on graceful shutdown (@HESleagacy in #8825)
  • Feat(tracestoremetrics): forward summaryreader when underlying reader supports it (@yurishkuro in #8895)
  • Feat(hotrod): add standard otel db semconv attributes to hotrod spans (@yurishkuro in #8893)
  • Fix(es): populate parentspanid field on write path (@yurishkuro in #8859)
  • Fix(mcp): don't error on empty critical path (@Me-Priyank in #8806)
  • Fix(jaegermcp): wait for server goroutine to exit on shutdown (@g-k-s-03 in #8852)
  • Fix(mcp): validate span_id format before querying backend (@truffle-dev in #8845)
  • Test(v1adapter): fix mock expectation validation in dependency reader tests (@kavyarathod05 in #8756)
  • Fix(es): improve es/os integration test ci coverage and reduce noise (@yurishkuro in #8836)
  • Fix(es): emit opensearch ism rollover_alias and consolidate backendversion (@yurishkuro in #8830)
  • Feat(query): accept base64-encoded trace ids in http api endpoints (@yurishkuro in #8828)
  • Refactor(es): introduce index rotation config schema with legacy flag deprecation (@yurishkuro in #8823)

🚧 Experimental Features

  • Feat(ai-gateway): serve per-session ui tools over the session-scoped mcp endpoint (@Nabil-Salah in #8973)
  • Feat(ai-gateway): add session-scoped mcp endpoint and session-stream registry (@Nabil-Salah in #8910)
  • Feat(jaegermcp): add read_skill tool for agent skill discovery (@SoumyaRaikwar in #8849)
  • Feat(es): add datastreamrotation strategy and data-stream-aware span write path (@Me-Priyank in #8833)

👷 CI Improvements

  • Fix(build): build embedded ui with pnpm after jaeger-ui migration (@ysh-bot in #9044)
  • Fix windows test cleanup failure: close output/error log file handles (@shayannab in #8884)
  • [chore] close idle connections for http clients in integration tests (@Manik2708 in #8815)
  • [chore]: add binary.stop() and binarypath for mid-test process control (@iammdzaidalam in #8822)
  • Feat(es): add e2e integration tests for all rotation strategies (@yurishkuro in #8838)

⚙️ Refactoring

  • Refactor(ai-gateway): apply rfc 0008 terminology — turn registry, route id, endpoint naming (@Nabil-Salah in #9017)
  • Refactor(es): introduce batch writespans api in v2 elasticsearch trace writer (@ysh-bot in #8990)
  • Feat(es): delete the olivere elasticsearch client stack (@ysh-bot in #8982)
  • Test(es): retire the detailederror olivere-error enricher (@ysh-bot in #8981)
  • Test(es): migrate the elasticsearch rotation e2e tests to the owned client (@ysh-bot in #8976)
  • Refactor(es): make esclient.client a pointer handle (@ysh-bot in #8979)
  • Test(es): migrate the direct elasticsearch integration tests to the owned client (@ysh-bot in #8975)
  • Feat(es): close idle connections on the owned elasticsearch client (@ysh-bot in #8974)
  • Feat(es): migrate the es metricstore onto the owned searcher and query ast (@ysh-bot in #8967)
  • Feat(es): migrate the es span reader onto the owned searcher and query ast (@ysh-bot in #8958)
  • Feat(es): migrate dependency store reads and writes onto owned esclient (@ysh-bot in #8957)
  • Feat(es): migrate sampling store reads and writes onto owned esclient (@yurishkuro in #8954)
  • Test(es): snapshot sampling store write requests via an injectable clock (@yurishkuro in #8955)
  • Unify elasticsearch backend version detection at client construction (rfc 0006 m4) (@iammdzaidalam in #8938)
  • Relocate the shared es roundtripper stack into the esclient package (@yurishkuro in #8936)
  • Route the elasticsearch admin client through a shared elastic-transport-go pool (@yurishkuro in #8932)
  • Rename the elasticsearch control-plane client package to esclient (@yurishkuro in #8930)
  • Add es/os request-snapshot suite baseline and converge mapping fixtures (@yurishkuro in #8922)
  • Refactor(es): thread context.context through the es rest client (@Me-Priyank in #8873)
  • Refactor(es): rename index name constants, eliminate *indexbasename (@yurishkuro in #8870)
  • Refactor(es): move index name constants to config package, drop prefix param from resolved*rotation (@yurishkuro in #8868)
  • Refactor(es): extract client construction into clientbuilder package (@yurishkuro in #8842)
  • Feat: export reusable jaegercli.newcommand for custom ocb distributions (@iammdzaidalam in #8835)
  • Refactor(es): rename rotation implementation files to rotation_{name}.go (@yurishkuro in #8839)
  • Chore(storage): remove fswatcher from elasticsearch factory (@iammdzaidalam in #8750)
  • Refactor(es): migrate depstore and metricstore to use rotation interface (@yurishkuro in #8826)

📖 Documentation

  • Rfc 0004: elasticsearch/opensearch data streams for span storage (@yurishkuro in #8804)

📊 UI Changes

✨ New Features

🐞 Bug fixes, Minor Improvements

  • Fix(genai): fix span icon hover tooltip and refine type icons and labels (@swetalin-10 in #4239)
  • Feat(timeline): emphasize span-type icons and soften tree chrome (@ysh-bot in #4238)
  • Chore(genai-tab): prefix the token usage row with "tokens:" (@swetalin-10 in #4222)
  • Fix(trace): show span pill labels as tooltips (@udita-0707 in #4220)
  • Feat(trace): expand span pills to hardcoded attribute set (@udita-0707 in #4214)
  • Fix(genai-tab): simplify and fix rendering of genai span icons (@swetalin-10 in #4221)
  • Feat(search): show and track trace search latency (@ysh-bot in #4216)
  • Refactor(otel): introduce iattributes collection replacing raw attribute arrays (@ysh-bot in #4211)
  • Feat(trace): add http status summary chips (@udita-0707 in #4149)
  • Feat(spanbarrow): add genai span type icons for llm, tool, agent, and retrieval spans (@swetalin-10 in #3857)
  • Fix(stats): make heatmap theme-aware (@jkowall in #4200)
  • Fix(listview): remove array-length pre-allocation that created holes (@dolliecoder in #4194)
  • Feat(genai-tab): add genai span detail content (@swetalin-10 in #4191)
  • Feat(utils): add genai span classification and isgenaitrace detection (@swetalin-10 in #3856)
  • Feat(monitor): sync monitor filters to url on change (@udita-0707 in #4182)
  • Fix(timeline): restore critical path hover animation in dark mode (@yurishkuro in #4180)
  • Feat(search): add absolute/relative toggle for table start time (@yurishkuro in #4175)
  • Feat(search): improve table view column sorting (@sksingh2005 in #3994)
  • Fix(filter-spans): stringify object/array attribute values for span search (@bhuvan-somisetty in #4171)
  • Fix: increase critical path bar contrast in dark mode (@bhavyamsharmaa in #4163)
  • Fix(assistant): render tool-call parts in chat thread (@SoumyaRaikwar in #4164)
  • Feat(monitor): support service/spankind/timeframe url params (@udita-0707 in #4119)
  • Feat(trace): add decorative span type icons in tree view (@swetalin-10 in #3832)
  • Fix(tracegraph): theme-aware edge and legend colors in dark mode (@bhavyamsharmaa in #4074)
  • Fix(tracepage): handle root span navigation at index 0 (@dolliecoder in #4145)
  • Fix: fix sidepanel resize when timeline is hidden (@sksingh2005 in #4046)
  • Fix(bug): clear trace id input field on navigation/reload (#4135) (@shubhtrek in #4136)
  • Refactor: standardize keyvaluepair typing across the ddg model (@shubhtrek in #4064)
  • Default to table view for search results (@yurishkuro in #4133)
  • Feat(flamegraph): resizable 50/50 table/chart split with scroll affordance (@yurishkuro in #4121)
  • Fix: copyicon button jumps/enlarges on hover (animation/layout glitch) (@akshatsinghai6682-sketch in #4022)
  • Fix(plexus): use currentcolor for ddg edge weight labels in dark mode (@shubhtrek in #4079)
  • Fix(search): keep back-to-search across find and trace id clicks (@udita-0707 in #4080)
  • Fix(monitor): replace hardcoded light-mode colors with design tokens in operations table (@udita-0707 in #4054)
  • Fix(assistant): wrap fetch passed to httpagent (@yurishkuro in #4044)

🚧 Experimental Features

  • Feat(genai): add genai tab shell to span detail panel (@swetalin-10 in #4122)
  • Feat(tracepage): add genaitimelineviewer view type with auto-activation (@swetalin-10 in #3872)

👷 CI Improvements

  • Chore(pnpm): migrate from npm to pnpm (@thisis-manan in #4137)
  • Chore(ci): route build/lint/test/coverage steps through makefile entrypoints(part of migration to pnpm) (@aprv10 in #4139)

⚙️ Refactoring

  • Refactor(search): remove dead trace redux slice and its search actions/api (@swetalin-10 in #3999)
  • Refactor(timeline): extract critical path logic into helper module (@sonalyadav1 in #4060)
  • Refactor(stats): extract computespanselftime to shared utility (@yurishkuro in #4113)
  • Refactor(ddg): use functional component for graph (@sksingh2005 in #4100)
  • Refactor:migrate virtualizedtraceview to functional component (@sksingh2005 in #4081)
  • Refactor(tracegraph): migrate to functional component (@sksingh2005 in #4058)

Don't miss a new jaeger release

NewReleases is sending notifications on new releases.