Conversation
Prepare `develop` for the next minor release. - bump version `2.0.1` → `2.1.0` - add `## Version 2.1.0 - tbd` changelog skeleton (Added / Changed / Fixed) Feature PRs merging into `develop` add their bullet under this section; the date is set when `develop` → `main` is promoted.
Add `develop` to the CI workflow's `push` and `pull_request` branch triggers so PRs into `develop` (the new integration branch) get lint + the test matrix. `main` triggers unchanged. HANA remains `workflow_dispatch`-only.
This comment has been minimized.
This comment has been minimized.
Contributor
There was a problem hiding this comment.
This is a clean, minimal release-preparation PR. The only thing to address before merging to main is trimming the empty changelog sub-sections (### Added, ### Changed, ### Fixed) that have no entries — leaving them in would result in bare headings in the published changelog.
PR Bot Information
Version: 1.29.18
- LLM:
anthropic--claude-4.6-sonnet - Correlation ID:
fd848e30-9239-11f1-802e-ae2522cdec59 - Event Trigger:
pull_request.opened - File Content Strategy: Full file content
## Problem
Cloud SDK v4 exposes `executeHttpRequest` /
`executeHttpRequestWithOrigin` as **getter-only properties**. The plugin
patched them with plain assignment, which silently fails on a getter —
so the Cloud SDK outbound path (CAP's default when
`@sap-cloud-sdk/http-client` is installed) produced **no CLIENT span**
and no `sap.btp.destination`.
## Fix
Patch via `Object.defineProperty(cloudSDK, name, { value, writable:
true, configurable: true })` — `writable`/`configurable` keep the
exports re-patchable. Verified the wrapper now fires end-to-end.
## Tests
- `test/tracing-remote-cloudsdk.test.js` — Cloud SDK path: asserts a
`@cap-js/telemetry` CLIENT span with `sap.btp.destination`, and no
undici span.
- `test/tracing-remote-native.test.js` — native-fetch path: asserts the
span comes from `@opentelemetry/instrumentation-undici` (not `-http`)
with `http.*`/`url.*`/`server.*` attributes.
Both drive a real local HTTP call; gated on `cds.version >= 9`.
Changelog updated.
---------
Co-authored-by: sjvans <sjvans@users.noreply.github.com>
Add `target-branch: 'develop'` to both dependabot update entries (npm + github-actions) so dependency-bump PRs open against `develop` instead of the default branch (`main`). They then promote to `main` via the reviewed `develop → main` PR, like every other change.
…ucture (#465) ## Added Wraps `cds.Service.prototype.tx()` so the queue worker's two-transaction structure (tx1: SELECT+UPDATE lock, tx2: handle+DELETE dispatch) appears as coherent `<service> - tx` spans under the `cds.spawn - run task` root, instead of each top-level CAP call becoming an orphan root. Guarded so `$batch` sub-requests (active `EventContext`) are unaffected; file-based messaging consumer delivery (bare `{}` context) still gets a root span. ## Test infrastructure Replaces fragile `cds.test.log()` regex assertions with a structured in-memory span exporter (`MyInMemorySpanExporter`) and `groupedByTrace()` / `rootSpans()` helpers. Rewrites the existing tracing suites and adds coverage for scheduled tasks, outboxed batch fan-out, and inbox/outbox messaging combinations. ## SQLite note Queue-worker suites skip on sqlite (published `@sap/cds` uses a `setTimeout` bypass, not `cds.spawn`) — verified on HANA in CI. Follow-up #467 removes the skips once the cds queue-spawn fix ships. Changelog updated. Targets `develop`.
Supersedes the #437 stash. Migrates the test runner jest → vitest. ## Why it's a clean win Vitest with `pool: 'forks'` + per-file isolation tears each test file's child process down when the file finishes — so the OTLP exporter's lingering handles die with the child, and **the suite exits cleanly with no `--forceExit`**. This is the same open-handle class that hangs jest (see #472/#466). Verified: exit 0, ~8s, no hang across repeated runs. ## Config (`vitest.config.mjs`) - `globals: true` — `describe/test/beforeEach/...` stay available, test bodies unchanged. - `pool: 'forks'`, `isolate: true`, `teardownTimeout: 1000` — the clean-exit mechanism (documented inline). - Ports the old `jest.config.js` HANA logic faithfully: default `testTimeout: 42000`; under `CI && HANA_DRIVER` → `include` restricted to `tracing-attributes` + `passport`, timeout ×10, `cds_requires_telemetry_tracing` set when `HANA_PROM`. Verified the subset selection. ## Changes - `package.json`: `test` → `vitest run --silent`; jest removed, vitest added. `jest.config.js` deleted. - 8 `jest.spyOn`/`jest.fn` → `vi.spyOn`/`vi.fn`. - 5 `beforeAll(done => …)` hooks → promise-returning (vitest treats a hook arg as a fixture). - `eslint.config.mjs`: test-files override declaring `vi` global. Lint clean. - Lockfile regenerated against public npm (0 internal-registry URLs). ##⚠️ Behavioral note — HTTP instrumentation disabled in the test app Under jest, OTel's `require-in-the-middle` http patching was **silently broken** by jest's module sandbox, so incoming HTTP SERVER spans never existed in tests (the existing `xtest` skips document this). Under vitest (real `require`) the instrumentation works and reparents trace trees, breaking several assertions. To keep this migration **behavior-neutral**, `test/bookshop/package.json` now sets `disableIncomingRequestInstrumentation` + `disableOutgoingRequestInstrumentation` on the http instrumentation — reproducing jest's effective environment. Consequence: the HTTP-instrumentation path stays untested (same blind spot as jest, now explicit config rather than an accident). **Follow-up issue filed to enable it and assert on the real incoming spans.** The tracing-attributes client-span assertions still pass because those spans come via undici / cloud-sdk, not instrumentation-http. ## Coordination Parallel PR #473 (prettier) touches `package.json` (additive) + lockfile. Lockfile will conflict — whichever merges second rebases. #473 excludes `jest.config.js` from formatting (this PR deletes it). ## Verified `npm run test` 53 pass / 14 skip, exit 0, ~8s, clean exit ×3 · `npm run lint` clean · HANA subset selection confirmed.
Supersedes the #438 oxfmt spike — adopts **oxfmt** (`0.63.0`, pinned) properly. ## Config (`.oxfmtrc.jsonc`) Based on the #438 spike, verified against the `lib/*.js` house style: `singleQuote`, `semi: false`, `printWidth: 120`, `tabWidth: 2`, `trailingComma: none`, `arrowParens: avoid`. `ignorePatterns` excludes `*.md`, `node_modules`, `package-lock.json`, `CHANGELOG.md`, and `jest.config.js` (see coordination). ## Scripts - `format` → `npx oxfmt` (write is oxfmt's default) - `format:check` → `npx oxfmt --check` No git hook / husky / lint-staged — CI `format:check` + scripts only (the intrusive hook from the #438 spike is intentionally not carried over). ## Commits (reviewable split) 1. `chore: add oxfmt formatter tooling` — config + scripts + devDep + lockfile + CI step 2. `chore: apply oxfmt formatting` — repo-wide reformat (11 files, line-wrapping only; verified non-semantic via `git diff -w`) ## eslint coexistence `@sap/cds/eslint.config.mjs` is `recommended` + `no-unused-vars`/`no-console` only (no stylistic rules) → no conflict. `npm run lint` stays green. ## CI One line added to the `lint` job in `ci.yml`: `npm run format:check`. ## Verified `npm run format:check` ✅ (56 files) · `npm run lint` (--max-warnings=0) ✅ · `npm run test` → 53 pass / 14 skip, exit 0 · lockfile resolved from public npm (0 internal-registry URLs). ## Coordination Parallel PR #474 (jest→vitest) deletes `jest.config.js` — this PR excludes it from formatting (0-line diff confirmed) so no collision. `package.json` change here is additive (scripts + devDep); lockfile will conflict with #474 — whichever merges second rebases.
… ConsoleMetricExporter (#479) ## What Consolidates all outbox/metrics test-quality work into one PR (formerly split as #479 + the stacked #480). - **In-memory metric reader** — `test/bookshop/lib/MyInMemoryMetricReader.js`, the metrics counterpart to `MyInMemorySpanExporter` (#465). Mirrors production **DELTA** temporality: SUM counters are accumulated across flushes into per-series running totals; GAUGE datapoints keep the latest absolute value. Wired via the `metrics-outbox`, `metrics-outbox-disabled`, and `metrics` profiles in `.cdsrc.json`. - **Outbox suites off console spying** — the three `metrics-outbox*.test.js` suites drop the `console.dir` spy and fixed `wait()` sleeps in favor of the reader + an `expectEventually()` force-flush polling helper (fails fast if the meter provider isn't wired). Folds in #445's polling approach. - **ConsoleMetricExporter unit test** — new `test/console-metric-exporter.test.js`, a pure unit test of the exporter's formatting (db.pool table, queue table, other single-vs-array, tenant variants, host-metrics aggregation, shutdown→FAILED), mirroring `console-span-exporter.test.js`. - **`metrics.test.js`** converted from scraping `cds.test.log()` output to asserting on the in-memory reader's datapoints. Metrics testing now mirrors the tracing side exactly: a to-console unit test **plus** in-memory-exporter–based integration tests. ## Why Follow-up to #465 (span test infra): eliminate console/log spying in the metrics suite and give `ConsoleMetricExporter` direct unit coverage. ## Review addressed - Bot review triaged: explicit `COUNTER_METRIC_NAMES` dispatch for `isCounter`; real wall-clock debounce in the multitenant test; isolation NOTE on the module-level singletons. - Dropped the unused debug-log silencer in the multitenant suite (never asserted). Kept the single-tenant `debugLog` mock — it backs a real `unknown service` assertion. Test-only change (no `lib/` change), so no CHANGELOG entry — consistent with #465/#474/#476. closes #478 Supersedes #445 and #480 (both folded in here) — I'll close them once this merges.
…-logs, #482) (#483) ## What Recreates dependabot #472 against `develop`, bumping the OTLP dev-dependency group to 0.221: - `@opentelemetry/exporter-metrics-otlp-grpc`: `^0.219` → `^0.221` - `@opentelemetry/exporter-metrics-otlp-proto`: `^0.219` → `^0.221` - `@opentelemetry/exporter-trace-otlp-grpc`: `^0.219` → `^0.221` - `@opentelemetry/exporter-trace-otlp-proto`: `^0.219` → `^0.221` - `@opentelemetry/instrumentation-host-metrics`: `^0.2.0` → `^0.4.0` - `@opentelemetry/instrumentation-runtime-node`: `^0.32.0` → `^0.34.0` ## The pin Adds a top-level `overrides` block pinning `@opentelemetry/sdk-logs` to `0.219.0`: ```json "overrides": { "@opentelemetry/sdk-logs": "0.219.0" } ``` `@opentelemetry/sdk-logs` 0.221 introduces an unbounded memory leak that OOM-crashes `test/logging.test.js` (heap climbs to ~3.8GB, crash after ~110s). Root-caused and tracked in #482. The pin keeps sdk-logs at 0.219 while everything else moves to 0.221, so `logging.test.js` behaves like `develop` again (passes in ~5s). Remove the pin once #482 is fixed. ## Verification - `test/logging.test.js`: passes in ~4.9s, exits promptly (no OOM/hang) - Full suite: 63 passed / 14 skipped, exits cleanly in ~7.4s - Lint (`eslint . --max-warnings=0`) + format (`oxfmt --check`): clean - Lock resolves sdk-logs to `0.219.0` while `exporter-trace-otlp-proto` is `0.221.0` — pin is surgical Supersedes #472. No CHANGELOG entry (dev-deps only). Refs #482.
…, §5) (#481) ## What Started as removing dead test exclusions for #477 (§2 cds<9 guards, §5 HANA CI test-subset). Removing the HANA subset surfaced HANA-only failures — including **two real production bugs** that the old 2-file subset had been masking — so this PR also fixes those. ### Production fixes (lib/) - **fix(tracing):** raw SQL leaked into HANA `INSERT` `prepare` span names. The name-normalization regex used `.` which doesn't match newlines, so HANA's multi-line `INSERT … WITH SRC AS (…)` SQL survived in the span name. Now uses `[\s\S]` so it's stripped to operation + table (matching SELECT); the SQL stays in `db.query.text`. - **fix(metrics):** `*_storage_time_in_seconds` gauges were skewed by the machine's UTC offset on HANA — HANA's `min()`/`max()` aggregates return timezone-naive timestamps that `new Date()` parsed as local time. Normalize to UTC before parsing. Both carry CHANGELOG `### Fixed` entries. ### Test-suite changes (§2/§5 + HANA robustness) - Remove all 8 dead `cds < 9` guards (§2) and the HANA CI 2-file test-subset (§5) so the full suite runs on HANA. - Convert queue/outbox span assertions to force-flush + poll (spans export after fixed waits on slower HANA); filter the outbox-scan trace primer out of the logging assertion; fix a lifecycle bug where a retry handler fired with an undefined counter. - **HANA CI config** (`vitest.config.mjs`, HANA-only): run files serially (all files share one HDI container vs sqlite's per-file in-memory DB), raise `hookTimeout`, HANA-only outbox settle in `afterAll`, and `retry: 2` for residual shared-remote-container timing variance. sqlite unchanged (retry:0, full parallelism). ### Skips (deviation from "no skips except passport" — conscious) - Multitenancy tests (`tracing-mt`, `metrics-outbox-multitenant`) **skip on HANA** with an explanatory comment: they need a bound BTP Service Manager for MTX tenant subscription, which the single pre-provisioned HDI container in CI doesn't provide. They still run fully on sqlite. This means multitenancy has no HANA coverage — acknowledged; can be revisited if the CI HANA setup gains MTX. ## Verification - sqlite: 63 passed / 14 skipped / 0 failed. - HANA (serial + retry:2): 64 passed / 6 skipped / 0 failed, stable across repeated runs (the 6 skips = 2 multitenancy + 4 pre-existing xtest/TODO in tracing.test.js). Refs #477 (§1 queue-worker sqlite skips remain, gated on the cds queue-spawn fix; §3 stubs pending).
# Chore: Clean Up Release Workflow ♻️ **Refactor**: Removed an outdated workaround comment from the release workflow. ### Changes * `.github/workflows/release.yml`: Removed the `# REVISIT: remove "npm explore better-sqlite3 -- npm run install" with cds^10` comment that was no longer relevant, cleaning up the release workflow configuration. - [ ] 🔄 Regenerate and Update Summary <details> <summary>PR Bot Information</summary> **Version:** `1.29.26` - Output Template: [Default Template](https://github.tools.sap/Code-Change-Intelligence/pr-bot/blob/main/src/services/llm/prompts/summary_default_output_template.md) - Summary Prompt: [Default Prompt](https://github.tools.sap/Code-Change-Intelligence/pr-bot/blob/main/src/services/llm/prompts/summary_instructions_prompt.md) - File Content Strategy: Full file content - Correlation ID: `8ac5e9d0-97bf-11f1-9e0b-c00ff05b9b1b` - LLM: `anthropic--claude-4.6-sonnet` - Event Trigger: `pull_request.opened` </details>
…unpin sdk-logs (#482) (#489) ## Problem Bumping the OTLP dev-deps to the `0.221` line pulled `@opentelemetry/sdk-logs` 0.219 → 0.221, which made `test/logging.test.js` OOM-crash (heap climbed to ~3.8 GB, ~110 s of GC thrashing before dying). #483 shipped an interim workaround pinning sdk-logs to `0.219.0` via a top-level `overrides` block. This PR removes that pin and fixes the actual defect. Closes #482. ## Root cause Two things combine: 1. **Constructor signature change (the real trigger).** In sdk-logs 0.221 the `SimpleLogRecordProcessor` and `BatchLogRecordProcessor` constructors changed from positional `(exporter)` to an options object `({ exporter })`. `lib/logging/index.js` still passed the exporter positionally (both the built-in path and the custom-processor path in `_getCustomProcessor`; the test's `MySimpleLogRecordProcessor` extends the SDK base and forwards its args). So `options.exporter` was `undefined`, and every emit called `core.internal._export(undefined, …)`, which throws. 2. **Diag re-entrancy loop.** The thrown export error hits `.catch(globalErrorHandler)` → `diag.error(...)`. Because `lib/index.js` wires `diag.setLogger(cds.log('telemetry'), …)`, that diagnostic goes back through `cds.log('telemetry')` → the overridden `cds.log.format` → `logger.emit()` → export throws again → … an unbounded loop. Each hop is a **microtask** (`processTicksAndRejections`), so the recursion is asynchronous. ## Fix - Construct the log processors with the `{ exporter }` options object 0.221 expects (built-in + custom-processor paths). This stops the export from throwing, which removes the source of the diag error loop — the OOM is gone. - Add a re-entrancy guard (`let emitting`) around `logger.emit()` in the `cds.log.format` interception: while inside our own `emit()` we still run the original format work (log output unchanged) but skip re-emitting. This is defense-in-depth against any **synchronous** re-entry through the export/diag path; `try/finally` guarantees the flag resets even if `emit()` throws. ## Unpin - Removed the `@opentelemetry/sdk-logs` `overrides` pin; regenerated the lockfile. sdk-logs now floats to `0.221.0`, matching the other OTLP deps. This removes the #483 workaround pin. ## Verification - `vitest run test/logging.test.js` — passes in ~1.3 s (was ~3.8 GB / ~110 s OOM crash on 0.221). The `logging.test.js` OOM was the repro; ran it repeatedly, stable. - Full sqlite suite: 63 passed / 14 skipped, no regressions. - eslint `--max-warnings=0` clean; `oxfmt --check` clean. - Lockfile: no internal-registry URLs; `npm ci` reproduces cleanly.
…er; drop tracing-attributes profile (#478) (#490) ## What Group 1 of #478. Converts the three tracing tests that still spied on `console.dir` to read structured `ReadableSpan` objects directly from the in-memory span exporter: - `test/tracing-remote-cloudsdk.test.js` - `test/tracing-remote-native.test.js` - `test/tracing-span-names.test.js` Each now uses `--profile tracing-in-memory` (which wires `MyInMemorySpanExporter` via `.cdsrc.json`) and reads over `captured` (the module-level array of `ReadableSpan`s) instead of the `console.dir` spy. `beforeEach(reset)` clears the buffer per test. All existing assertions are preserved verbatim — `instrumentationScope.name` filters (`@cap-js/telemetry`, `@opentelemetry/instrumentation-undici`), span names, and attributes (`code.function.name`, `db.query.text`, `sap.btp.destination`, the no-raw-SQL / no-URL-in-span-name checks). `captured` holds full ReadableSpans with `instrumentationScope`, so the filters just point at `captured`. No flush/poll was needed: the spans for these single request/DB ops appear synchronously in `captured` after the awaited call. In `tracing-span-names.test.js`, `data.reset()` is itself traced, so the buffer is cleared *after* reset (mirroring `tracing-attributes.test.js`). ## Why No more `console.dir` spying in the tracing tests. With all three files migrated, the `[tracing-attributes]` profile in `test/bookshop/.cdsrc.json` has no remaining consumers (verified: only these 3 used it; `tracing-attributes.test.js` despite its name already uses `tracing-in-memory`), so it is removed. This also resolves the deferred "rename tracing-attributes → tracing-console" note — the profile simply goes away. Test-only change. No lib change, no CHANGELOG. Refs #478 (group 1 only; group 2 done via #479, group 3 stays).
…ans + traceparent propagation (#475) (#491) ## What Re-enables HTTP instrumentation in the test app (disabled by #474 to stay behavior-neutral under jest) and asserts the incoming-request tracing behavior it produces. - **Test-app config** (`test/bookshop/package.json`): removed `disableIncomingRequestInstrumentation` / `disableOutgoingRequestInstrumentation` so both default to on; kept `ignoreIncomingRequestHook`. Incoming HTTP requests now produce a SERVER span (the root of each request trace) and outgoing requests produce CLIENT spans. - **`GET with traceparent is traced`** (was `xtest`): asserts the incoming SERVER span adopts the W3C context from the `traceparent` header — trace id `0af7651916cd43dd8448eb211c80319c`, parent span id `b7ad6b7169203331`. - **`instrumentation hooks`** (was empty `xtest`): asserts both suppression mechanisms — the sampler's `ignoreIncomingPaths` (`/odata/v4/admin/Authors`) and `MyIgnoreIncomingRequestHook` (`/Books(252)`) — produce NO incoming SERVER span, while a non-ignored path (`/Books`) does. - **`$batch is traced`**: updated for reparenting — the single `$batch` POST now yields ONE incoming SERVER root with both batch sub-operations (CREATE Genres draft, READ Genres) nested beneath it (was 2 roots). - **tracing-messaging CHECKs** (`without-outbox`, `inboxed`, `persistent-outbox`): the producer trace is now rooted at the incoming SERVER span (`AdminService - tx` nests under it), so the root assertion was updated from name `AdminService - tx` to `SpanKind.SERVER` while keeping the same nested-span assertions. ## Why The test's HTTP client runs in-process; with outgoing instrumentation now on, it would itself create a CLIENT span (an artificial extra root that also overwrites a manually-set `traceparent`). A shared `asExternalClient` helper runs client-side requests under `suppressTracing` to model a real external, un-instrumented caller — the outgoing CLIENT artifact is skipped and the genuine incoming SERVER span is the trace root. No `lib/` change (config + tests only). No CHANGELOG. ## Verification (sqlite) - `test/tracing.test.js` — 11 passed / 2 skipped (the 2 formerly-`xtest` now real + passing; `$batch` fixed; #477 §3 stubs remain skipped) - `test/tracing-remote-cloudsdk.test.js` + `test/tracing-remote-native.test.js` — pass (outgoing CLIENT instrumentation didn't break them) - Full suite — 65 passed / 12 skipped (was 63 / 14; the 2 newly-enabled tests moved skipped→passed) - lint + oxfmt clean; lockfile untouched ## HANA note `inboxed` and `persistent-outbox` messaging tests are HANA-only (skipped on sqlite) but share the same reparented producer-root assertion, so they were updated too — HANA CI must be verified on this PR. closes #475
## What
Extracts the six test helpers that had been copy-pasted across ~10 test
files into one shared module, `test/bookshop/lib/test-utils.js`:
- `flushSpans()` — unwrap the ProxyTracerProvider → delegate and
`forceFlush()`.
- `eventually(fn, { flush, timeout, interval })` — the unified
state-based poll. The span `eventually` and the metric
`expectEventually` were structurally identical, differing only in the
flush target + defaults, so they are now one function. `flush` defaults
to `flushSpans` (span callers); metric callers pass the reader's
`forceFlush` and their own timeout/interval.
- `clearOutbox(timeout = 5000)` — timeout-bounded `DELETE FROM
cds.outbox.Messages`.
- `asExternalClient(fn)` — runs `fn` under `suppressTracing`.
- `isOutboxScanTrace(g)` / `meaningful(groups)` — the outbox-scan-trace
filter, reconciled to a single `meaningful(groups)` signature.
## Why
These helpers landed independently during the HANA / instrumentation
work and drifted into ~10 near-identical copies. Centralizing them
removes the duplication (net -141 lines) and gives one place to maintain
the polling / flush / outbox-scan-filter logic.
## Notes
- **Behavior-preserving refactor** — no assertion changes, no
timeout/interval drift (each call site passes through its original
values), no predicate changes.
- Test-only. No `lib/**` change, no CHANGELOG (test-only), no dependency
change.
- `test-utils.js` stays dependency-light: it only requires
`@opentelemetry/api`, `@opentelemetry/core`, and `node:timers/promises`
— it does **not** `require('@sap/cds')` at module top (same rule that
protects the sibling exporters/reader). `clearOutbox` uses the global
`DELETE` provided by `cds.test()` at call time.
## Verification
- Full sqlite suite: **65 passed / 12 skipped** — matches the develop
baseline exactly.
- Per-file runs (metrics-outbox, metrics-outbox-multitenant, metrics,
tracing, tracing-messaging-without-outbox) all pass; the sqlite-gated
tracing files (outboxed-batch, scheduled) skip as before.
- eslint `--max-warnings=0` clean, `oxfmt --check` clean.
## HANA CI
Several affected files run **only on HANA** and share these helpers, so
they cannot be validated locally — please confirm HANA CI is green for:
- `test/tracing-scheduled.test.js`
- `test/tracing-messaging-inboxed.test.js`
- `test/tracing-messaging-persistent-outbox.test.js`
- `test/tracing-outboxed-batch.test.js`
(`test/tracing-messaging-without-outbox.test.js` does run on sqlite and
exercises the shared `meaningful`/`eventually` path — confirmed
passing.)
closes #488
…#486) (#493) ## What Replaces the load-order-fragile `process.env.cds_requires_*` / `process.env.cds_*` string-JSON test config with proper cds config: `.cdsrc.json` profiles (composed with `--profile`) and `cds.test()` args. Test-only + test-app-config change; no `lib/` change. ## Why Setting config via `process.env.cds_*` string-JSON at module top is load-order-sensitive: it must run before any `@sap/cds` require or it is silently ignored (the root of the removed `delete cds.env` hack). cds already supports the same config declaratively via `.cdsrc.json` profiles. Root cause of the old `// REVISIT: ... package.json wins` comments (why some config had to be done via env): cds loads config sources sequentially, `package.json` **after** `.cdsrc.json`, last-writer-wins. So a `.cdsrc.json` profile could never override a key that `package.json` set at its base. Fix: move those base defaults (`log.cls_custom_fields`, `messaging.kind`/`file`) from `test/bookshop/package.json` into `test/bookshop/.cdsrc.json` base, so the `.cdsrc.json` profiles (same source) win as intended. ## Sites moved to profiles (all 8 — zero `process.env.cds_*` remain) | Site | Was | Now | |---|---|---| | `logging.test.js` (cls_custom_fields, tracing.exporter:false) | `cds_log`, `cds_requires_telemetry_tracing` | `[logging]` profile (+ base moved out of package.json) | | `tracing.test.js` (sampler ignoreIncomingPaths) | `cds_requires_telemetry_tracing_sampler` | new `[sampler-ignore-authors]` profile, `--profile 'tracing-in-memory, sampler-ignore-authors'` | | `tracing-remote-native.test.js`, `tracing-attributes.test.js` (native_fetch) | `cds_remote_native__fetch` | new `[native-fetch]` profile (`remote.native_fetch: true`), `--profile 'tracing-in-memory, native-fetch'` | | `passport.test.js` (scheduling off) | `cds_requires_scheduling` | new `[no-scheduling]` profile, `cds.test(dir, '--profile', 'no-scheduling')` | | `tracing-messaging-{inboxed,persistent-outbox,without-outbox}.test.js` (messaging kind/file/flags) | `cds_requires_messaging` | existing `[inboxed]`/`[persistent-outbox]`/`[without-outbox]` profiles now fully carry it (messaging base moved out of package.json) | ## .cdsrc.json changes - Added base `requires.messaging` (local-messaging / msg-box) and `log.cls_custom_fields` (moved from package.json). - `[logging]`: added `requires.telemetry.tracing.exporter: false`. - New profiles: `[sampler-ignore-authors]`, `[native-fetch]`, `[no-scheduling]`. ## Verification - Full sqlite suite: **65 passed / 12 skipped** (identical to baseline, same skip set). - Each converted file passes individually on sqlite. - `grep -rn "process.env.cds_" test/` → none remain. - eslint (test/) + oxfmt clean; `grep -c int.repositories.cloud.sap package-lock.json` = 0. ## HANA CI caveat Profile changes are DB-agnostic, but these run on HANA and could only be validated for config equivalence locally (config resolves identically to the old env), not executed: `logging` (runs on both), and the HANA-only `tracing-messaging-inboxed` + `tracing-messaging-persistent-outbox`. HANA CI must validate them. No lib change. No behavior change. Closes #486
#494) ## What Consolidates the hard-won test-suite knowledge that was scattered (and duplicated) across `test/**` comment blocks into a single, authoritative top-level **`TESTING.md`**, then trims the duplicated in-file comments down to short pointers. **New `TESTING.md`** covers: - Running the tests (`npm test` / vitest, sqlite default; CI matrix Node 22/24 × cds 9/10; where the bookshop app lives) - sqlite vs HANA (per-file in-memory DB vs one shared HDI container, and the implications: serial file execution, raised timeouts, `retry: 2`, outbox clear/settle; how the HANA path is signalled via `TELEMETRY_TEST_HANA`; HANA is a separate `workflow_dispatch`-only workflow, not PR CI) - Config via `.cdsrc.json` profiles (not env) — the profile table + compose syntax + the #486 load-order gotcha (don't reintroduce `process.env.cds_*`) - In-memory test infrastructure (`MyInMemorySpanExporter` / `MyInMemoryMetricReader`, DELTA temporality, the no-`require('@sap/cds')`-at-top rule) - Shared test helpers (`test/utils.js` from #488) and the flush+poll pattern - HTTP instrumentation (#475) and why client requests are wrapped in `asExternalClient` - The only two sanctioned skips (#477): SAP Passport on sqlite; multitenancy on HANA — plus the #477-tracked debt skips - Known caveats (the `startup > NO_TELEMETRY=true` local-env artifact; the internal-registry lockfile trap) **Trimmed duplicated comments to pointers** (comment-only, no logic change) in: `tracing-scheduled`, `tracing-outboxed-batch`, `tracing-messaging-inboxed`, `tracing-messaging-persistent-outbox`, `tracing-messaging.js`, `tracing-mt`, `metrics-outbox-multitenant`. The repeated `cds.spawn on sqlite` skip rationale, the shared-HANA-container outbox-bleed explanation, and the multitenancy Service-Manager note now live in TESTING.md; each site keeps a one-line pointer. Genuinely local rationale (timezone-bug explanation, per-test tree shapes, `test/utils.js` own doc comments) is left untouched. **README** gets a one-line link to TESTING.md under the contributing section. ## Notes - No lib/behavior change. Test-file edits are **comment-only** (verified: every changed line in `test/**` starts with `//`). No change to test logic, assertions, config, `vitest.config.mjs`, `.cdsrc.json`, the exporters/reader, or the #477 gated skip logic. - Full sqlite suite unchanged: **65 passed / 12 skipped**. - `oxfmt --check` clean; changed files lint clean; `grep -c int.repositories.cloud.sap package-lock.json` = 0 (lockfile untouched). - No CHANGELOG entry (docs/test-only, not user-facing lib). closes #487
…ith 10 updates (#485) Bumps the dev-dependencies group with 10 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@cap-js/cds-test](https://github.com/cap-js/cds-test) | `1.0.1` | `1.0.2` | | [@opentelemetry/exporter-metrics-otlp-grpc](https://github.com/open-telemetry/opentelemetry-js) | `0.219.0` | `0.221.0` | | [@opentelemetry/exporter-metrics-otlp-proto](https://github.com/open-telemetry/opentelemetry-js) | `0.219.0` | `0.221.0` | | [@opentelemetry/exporter-trace-otlp-grpc](https://github.com/open-telemetry/opentelemetry-js) | `0.219.0` | `0.221.0` | | [@opentelemetry/exporter-trace-otlp-proto](https://github.com/open-telemetry/opentelemetry-js) | `0.219.0` | `0.221.0` | | [@opentelemetry/instrumentation-host-metrics](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/HEAD/packages/instrumentation-host-metrics) | `0.2.0` | `0.4.0` | | [@opentelemetry/instrumentation-runtime-node](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/HEAD/packages/instrumentation-runtime-node) | `0.32.0` | `0.34.0` | | [@sap/cds-mtxs](https://cap.cloud.sap/) | `4.0.1` | `4.0.2` | | [axios](https://github.com/axios/axios) | `1.18.1` | `1.19.0` | | [eslint](https://github.com/eslint/eslint) | `10.6.0` | `10.9.1` | Updates `@cap-js/cds-test` from 1.0.1 to 1.0.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/cap-js/cds-test/releases">@cap-js/cds-test's releases</a>.</em></p> <blockquote> <h2>v1.0.2</h2> <h3>Fixed</h3> <ul> <li><code>Buffer</code> request bodies are no longer serialized via <code>JSON.stringify()</code></li> <li>In <code>chest</code>-powered tests, <code>inspectPort</code> configuration will be passed to <code>node:test.run(...)</code> when debugging</li> <li>In <code>chest</code>-powered tests, <code>concurrency</code> of <code>node:test.run(...)</code> will be limitted to <code>1</code> to enable debugging</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md">@cap-js/cds-test's changelog</a>.</em></p> <blockquote> <h2>[1.0.2] - 2026-08-04</h2> <h3>Fixed</h3> <ul> <li><code>Buffer</code> request bodies are no longer serialized via <code>JSON.stringify()</code></li> <li>In <code>chest</code>-powered tests, <code>inspectPort</code> configuration will be passed to <code>node:test.run(...)</code> when debugging</li> <li>In <code>chest</code>-powered tests, <code>concurrency</code> of <code>node:test.run(...)</code> will be limitted to <code>1</code> to enable debugging</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/cap-js/cds-test/commit/1304e9dcf0b1e59682cbb423ae2f6f2f268bf69a"><code>1304e9d</code></a> fix: pass debug flag to runner (<a href="https://redirect.github.com/cap-js/cds-test/issues/96">#96</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/540bc36058ad48dc29b66395eca49903b4adc84a"><code>540bc36</code></a> Bump <code>@cap-js/sqlite</code> from 2.4.0 to 3.0.2 (<a href="https://redirect.github.com/cap-js/cds-test/issues/102">#102</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/4f150dfa04bbb96ce1d5cafbba499cfa0159b7a2"><code>4f150df</code></a> fix(naxios): send Buffer request bodies as raw bytes (<a href="https://redirect.github.com/cap-js/cds-test/issues/103">#103</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/4d6ca38e165d2f338b433a262d252f2412a04812"><code>4d6ca38</code></a> feat: remove <code>sleep</code> API (<a href="https://redirect.github.com/cap-js/cds-test/issues/98">#98</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/6d8eac954c61f0e6e56d06281212e12f826300e3"><code>6d8eac9</code></a> chore: open dependency to cap-js/sqlite 3 (<a href="https://redirect.github.com/cap-js/cds-test/issues/94">#94</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/7456cb5194babf19ca82add11f4cea6e10adcf15"><code>7456cb5</code></a> fix: fulfilled and rejected can be awaited (<a href="https://redirect.github.com/cap-js/cds-test/issues/93">#93</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/fa7721a04feb304839bbf2ade9e459196575d01e"><code>fa7721a</code></a> Bump qs from 6.15.1 to 6.15.2 in the npm_and_yarn group across 1 directory (<a href="https://redirect.github.com/cap-js/cds-test/issues/91">#91</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/7c833de09ad800a2502cfc73c96a6531cc8b5598"><code>7c833de</code></a> fix: .to.be.fullfilled/rejected must return this (<a href="https://redirect.github.com/cap-js/cds-test/issues/92">#92</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/0f1a65c82c24ff6c499f9cd50dba220441bf63b5"><code>0f1a65c</code></a> Bump <code>@cap-js/sqlite</code> from 2.2.0 to 2.4.0 (<a href="https://redirect.github.com/cap-js/cds-test/issues/88">#88</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/90e6cf560bd54c8c223836d9349cecef86c48348"><code>90e6cf5</code></a> Temporarily reverting cds.test --with-mocks</li> <li>Additional commits viewable in <a href="https://github.com/cap-js/cds-test/compare/v1.0.1...v1.0.2">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/exporter-metrics-otlp-grpc` from 0.219.0 to 0.221.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/exporter-metrics-otlp-grpc's releases</a>.</em></p> <blockquote> <h2>experimental/v0.221.0</h2> <h2>0.221.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>feat(sdk-logs)!: configure the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6931">#6931</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a> <ul> <li>(user-facing): <code>LoggerProviderOptions.forceFlushTimeoutMillis</code> has been removed; pass <code>timeoutMillis</code> to <code>LoggerProvider.forceFlush()</code> instead.</li> </ul> </li> <li>feat(instrumentation-http)!: emit only stable HTTP semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes HTTP attribute or metric emission — old (v1.7.0) and duplicate (<code>http</code>/<code>http/dup</code>) semconv outputs have been removed. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-fetch)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-xml-http-request)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-grpc)!: emit only stable network semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes attribute emission — <code>net.peer.name</code> and <code>net.peer.port</code> (old) are no longer set; only <code>server.address</code> and <code>server.port</code> (stable). <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): allow modifying ReadWriteLogRecord properties (including hrTime, hrTimeObserved, and spanContext) in accordance with the OpenTelemetry Logs specification <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6923">#6923</a> <a href="https://github.com/Babul422"><code>@Babul422</code></a></li> <li>feat(sdk-node): emit a deprecation warning when the <code>JaegerPropagator</code> is selected via <code>OTEL_PROPAGATORS</code> or declarative config; use <code>tracecontext</code> instead. <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>feat(instrumentation-http): set <code>error.type</code> to status code in metrics for error requests. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6919">#6919</a> <a href="https://github.com/raphael-theriault-swi"><code>@raphael-theriault-swi</code></a></li> </ul> <h2>experimental/v0.220.0</h2> <h2>0.220.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>refactor(sdk-logs)!: refactor BatchLogRecordProcessor constructor signature <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6817">#6817</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li>(user-facing): <code>BatchLogRecordProcessor</code> now takes a single <code>options</code> object with all possible properties, instead of two separate arguments. For example, before <code>new BatchLogRecordProcessor(exporter, { maxQueueSize: 1000 })</code>, after <code>new BatchLogRecordProcessor({ exporter, maxQueueSize: 1000 })</code>.</li> <li><code>interface BufferConfig</code> -> <code>interface BatchLogRecordProcessorOptions</code>, and now includes the <code>exporter</code> property</li> <li><code>interface BatchLogRecordProcessorBrowserConfig</code> -> <code>interface BatchLogRecordProcessorBrowserOptions</code></li> <li>(user-facing): <code>SimpleLogRecordProcessor</code> now takes a single <code>options</code> object with all possible properties. For example, before <code>new SimpleLogRecordProcessor(exporter)</code>, after <code>new SimpleLogRecordProcessor({ exporter })</code>. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6836">#6836</a></li> </ul> </li> <li>refactor(configuration)!: change config file parsing to <em>not</em> add default values, nor merge <code>*_list</code> fields <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6765">#6765</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li>Responsibility for handling <a href="https://opentelemetry.io/docs/specs/otel/configuration/sdk/#create">declarative config "nullBehavior" and "defaultBehavior"</a> belongs in the "create" handling, currently in the "sdk-node" package.</li> </ul> </li> <li>docs(shim-opencensus): <em>Notice</em>: The <code>@opentracing/shim-opencensus</code> package will be removed in SDK 3.x, planned for approximately September 2026. <ul> <li>The <a href="https://opentelemetry.io/blog/2026/deprecating-opencensus-compatibility/">OpenCensus</a> and <a href="https://opentelemetry.io/blog/2026/deprecating-opentracing-compatibility/">OpenTracing</a> compatibility requirements in the OpenTelemetry specification have been deprecated.</li> </ul> </li> <li>chore(sdk-node)!: Drop support for deprecated OpenCensusMetricProducer from declarative config</li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(configuration): bump config schema to v1.1.0; rename <code>without_scope_info</code> → <code>scope_info_enabled</code> and <code>without_target_info/development</code> → <code>target_info_enabled/development</code> on the Prometheus pull exporter (semantics inverted), rename <code>with_resource_constant_labels</code> → <code>resource_constant_labels</code>. Validate <code>file_format</code> per the configuration versioning spec: accept any minor version of major <code>1</code> (e.g. <code>1.0</code>, <code>1.1</code>), warn when the minor version is newer than supported, and reject other major versions. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6781">#6781</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(sdk-node): wire up <code>id_generator</code> from declarative config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6782">#6782</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(sdk-node): wire up <code>tracer_provider.sampler</code> from declarative config (always_on, always_off, trace_id_ratio_based, parent_based); unrecognized variants warn and fall back to ParentBased(AlwaysOn) <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6506">#6506</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(propagator-env-carrier): empty name normalization <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6827">#6827</a> <a href="https://github.com/pellared"><code>@pellared</code></a></li> <li>feat(propagator-env-carrier): make <code>EnvironmentGetter</code> read the current <code>process.env</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6853">#6853</a> <a href="https://github.com/pellared"><code>@pellared</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-logs): stop <code>Logger.emit()</code> doing work (record construction, metrics, processor <code>onEmit</code>) after the <code>LoggerProvider</code> has shut down <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6826">#6826</a> <a href="https://github.com/anneheartrecord"><code>@anneheartrecord</code></a></li> <li>fix(sdk-node): pass all config properties (endpoint, headers, timeout, TLS, compression, temporality preference, default histogram aggregation) to OTLP metric exporters in declarative config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6814">#6814</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>fix(sdk-logs): default BatchLogRecordProcessor <code>scheduleDelayMillis</code> is 1000 <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6796">#6796</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(configuration): percent-decode keys and values in <code>resource.attributes_list</code> per spec <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6787">#6787</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>fix(configuration): default <code>log_level</code> to <code>info</code> in env-based config initialization for consistency with file-based config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6788">#6788</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/76fa6b509e2b48d9cbee31cb37a2efc61dc4d384"><code>76fa6b5</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6942">#6942</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/37878969526151bcda4449d92b0e69e913e0081e"><code>3787896</code></a> chore(deps): update dependency webpack-cli to v7.2.1 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6934">#6934</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/be5f757aeea424130834183df8e1726b5797c636"><code>be5f757</code></a> fix(deps): update dependency body-parser to v2.3.0 [security] (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6941">#6941</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f6d8fbe74242dbce7cd5c79ec4fca8617b9936bb"><code>f6d8fbe</code></a> chore(deps): lock file maintenance (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6559">#6559</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/96127325ad0f158d55c19830aa20216eef65cf49"><code>9612732</code></a> chore: remove examples/dice from workspaces (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6937">#6937</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/7107906d0ad48fb4c3b4c161de0e195cbe2b9059"><code>7107906</code></a> chore: start using min-release-age in .npmrc, disable minimumReleaseAge for r...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a7e5d11a3987427f61c7e51a5e0f55f057945d3d"><code>a7e5d11</code></a> chore(deps): update dependency webpack to v5.108.4 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6933">#6933</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/af7a82de767f87e30c2871fe88526c528e06b84d"><code>af7a82d</code></a> chore(deps): update dependency msw to v2.15.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6831">#6831</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b9f57c622f244ed7d7f671b02159e6c1c378a3c4"><code>b9f57c6</code></a> chore(deps): update dependency <code>@types/webpack-env</code> to v1.18.8 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6877">#6877</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/cbb4abf849e40b154144ec35dfa20b597b2edc0a"><code>cbb4abf</code></a> chore(deps): update ubuntu docker tag to v26 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6635">#6635</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.219.0...experimental/v0.221.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/exporter-metrics-otlp-proto` from 0.219.0 to 0.221.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/exporter-metrics-otlp-proto's releases</a>.</em></p> <blockquote> <h2>experimental/v0.221.0</h2> <h2>0.221.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>feat(sdk-logs)!: configure the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6931">#6931</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a> <ul> <li>(user-facing): <code>LoggerProviderOptions.forceFlushTimeoutMillis</code> has been removed; pass <code>timeoutMillis</code> to <code>LoggerProvider.forceFlush()</code> instead.</li> </ul> </li> <li>feat(instrumentation-http)!: emit only stable HTTP semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes HTTP attribute or metric emission — old (v1.7.0) and duplicate (<code>http</code>/<code>http/dup</code>) semconv outputs have been removed. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-fetch)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-xml-http-request)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-grpc)!: emit only stable network semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes attribute emission — <code>net.peer.name</code> and <code>net.peer.port</code> (old) are no longer set; only <code>server.address</code> and <code>server.port</code> (stable). <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): allow modifying ReadWriteLogRecord properties (including hrTime, hrTimeObserved, and spanContext) in accordance with the OpenTelemetry Logs specification <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6923">#6923</a> <a href="https://github.com/Babul422"><code>@Babul422</code></a></li> <li>feat(sdk-node): emit a deprecation warning when the <code>JaegerPropagator</code> is selected via <code>OTEL_PROPAGATORS</code> or declarative config; use <code>tracecontext</code> instead. <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>feat(instrumentation-http): set <code>error.type</code> to status code in metrics for error requests. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6919">#6919</a> <a href="https://github.com/raphael-theriault-swi"><code>@raphael-theriault-swi</code></a></li> </ul> <h2>experimental/v0.220.0</h2> <h2>0.220.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>refactor(sdk-logs)!: refactor BatchLogRecordProcessor constructor signature <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6817">#6817</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li>(user-facing): <code>BatchLogRecordProcessor</code> now takes a single <code>options</code> object with all possible properties, instead of two separate arguments. For example, before <code>new BatchLogRecordProcessor(exporter, { maxQueueSize: 1000 })</code>, after <code>new BatchLogRecordProcessor({ exporter, maxQueueSize: 1000 })</code>.</li> <li><code>interface BufferConfig</code> -> <code>interface BatchLogRecordProcessorOptions</code>, and now includes the <code>exporter</code> property</li> <li><code>interface BatchLogRecordProcessorBrowserConfig</code> -> <code>interface BatchLogRecordProcessorBrowserOptions</code></li> <li>(user-facing): <code>SimpleLogRecordProcessor</code> now takes a single <code>options</code> object with all possible properties. For example, before <code>new SimpleLogRecordProcessor(exporter)</code>, after <code>new SimpleLogRecordProcessor({ exporter })</code>. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6836">#6836</a></li> </ul> </li> <li>refactor(configuration)!: change config file parsing to <em>not</em> add default values, nor merge <code>*_list</code> fields <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6765">#6765</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li>Responsibility for handling <a href="https://opentelemetry.io/docs/specs/otel/configuration/sdk/#create">declarative config "nullBehavior" and "defaultBehavior"</a> belongs in the "create" handling, currently in the "sdk-node" package.</li> </ul> </li> <li>docs(shim-opencensus): <em>Notice</em>: The <code>@opentracing/shim-opencensus</code> package will be removed in SDK 3.x, planned for approximately September 2026. <ul> <li>The <a href="https://opentelemetry.io/blog/2026/deprecating-opencensus-compatibility/">OpenCensus</a> and <a href="https://opentelemetry.io/blog/2026/deprecating-opentracing-compatibility/">OpenTracing</a> compatibility requirements in the OpenTelemetry specification have been deprecated.</li> </ul> </li> <li>chore(sdk-node)!: Drop support for deprecated OpenCensusMetricProducer from declarative config</li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(configuration): bump config schema to v1.1.0; rename <code>without_scope_info</code> → <code>scope_info_enabled</code> and <code>without_target_info/development</code> → <code>target_info_enabled/development</code> on the Prometheus pull exporter (semantics inverted), rename <code>with_resource_constant_labels</code> → <code>resource_constant_labels</code>. Validate <code>file_format</code> per the configuration versioning spec: accept any minor version of major <code>1</code> (e.g. <code>1.0</code>, <code>1.1</code>), warn when the minor version is newer than supported, and reject other major versions. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6781">#6781</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(sdk-node): wire up <code>id_generator</code> from declarative config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6782">#6782</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(sdk-node): wire up <code>tracer_provider.sampler</code> from declarative config (always_on, always_off, trace_id_ratio_based, parent_based); unrecognized variants warn and fall back to ParentBased(AlwaysOn) <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6506">#6506</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(propagator-env-carrier): empty name normalization <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6827">#6827</a> <a href="https://github.com/pellared"><code>@pellared</code></a></li> <li>feat(propagator-env-carrier): make <code>EnvironmentGetter</code> read the current <code>process.env</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6853">#6853</a> <a href="https://github.com/pellared"><code>@pellared</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-logs): stop <code>Logger.emit()</code> doing work (record construction, metrics, processor <code>onEmit</code>) after the <code>LoggerProvider</code> has shut down <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6826">#6826</a> <a href="https://github.com/anneheartrecord"><code>@anneheartrecord</code></a></li> <li>fix(sdk-node): pass all config properties (endpoint, headers, timeout, TLS, compression, temporality preference, default histogram aggregation) to OTLP metric exporters in declarative config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6814">#6814</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>fix(sdk-logs): default BatchLogRecordProcessor <code>scheduleDelayMillis</code> is 1000 <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6796">#6796</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(configuration): percent-decode keys and values in <code>resource.attributes_list</code> per spec <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6787">#6787</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>fix(configuration): default <code>log_level</code> to <code>info</code> in env-based config initialization for consistency with file-based config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6788">#6788</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/76fa6b509e2b48d9cbee31cb37a2efc61dc4d384"><code>76fa6b5</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6942">#6942</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/37878969526151bcda4449d92b0e69e913e0081e"><code>3787896</code></a> chore(deps): update dependency webpack-cli to v7.2.1 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6934">#6934</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/be5f757aeea424130834183df8e1726b5797c636"><code>be5f757</code></a> fix(deps): update dependency body-parser to v2.3.0 [security] (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6941">#6941</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f6d8fbe74242dbce7cd5c79ec4fca8617b9936bb"><code>f6d8fbe</code></a> chore(deps): lock file maintenance (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6559">#6559</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/96127325ad0f158d55c19830aa20216eef65cf49"><code>9612732</code></a> chore: remove examples/dice from workspaces (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6937">#6937</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/7107906d0ad48fb4c3b4c161de0e195cbe2b9059"><code>7107906</code></a> chore: start using min-release-age in .npmrc, disable minimumReleaseAge for r...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a7e5d11a3987427f61c7e51a5e0f55f057945d3d"><code>a7e5d11</code></a> chore(deps): update dependency webpack to v5.108.4 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6933">#6933</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/af7a82de767f87e30c2871fe88526c528e06b84d"><code>af7a82d</code></a> chore(deps): update dependency msw to v2.15.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6831">#6831</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b9f57c622f244ed7d7f671b02159e6c1c378a3c4"><code>b9f57c6</code></a> chore(deps): update dependency <code>@types/webpack-env</code> to v1.18.8 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6877">#6877</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/cbb4abf849e40b154144ec35dfa20b597b2edc0a"><code>cbb4abf</code></a> chore(deps): update ubuntu docker tag to v26 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6635">#6635</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.219.0...experimental/v0.221.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/exporter-trace-otlp-grpc` from 0.219.0 to 0.221.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/exporter-trace-otlp-grpc's releases</a>.</em></p> <blockquote> <h2>experimental/v0.221.0</h2> <h2>0.221.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>feat(sdk-logs)!: configure the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6931">#6931</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a> <ul> <li>(user-facing): <code>LoggerProviderOptions.forceFlushTimeoutMillis</code> has been removed; pass <code>timeoutMillis</code> to <code>LoggerProvider.forceFlush()</code> instead.</li> </ul> </li> <li>feat(instrumentation-http)!: emit only stable HTTP semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes HTTP attribute or metric emission — old (v1.7.0) and duplicate (<code>http</code>/<code>http/dup</code>) semconv outputs have been removed. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-fetch)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-xml-http-request)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-grpc)!: emit only stable network semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes attribute emission — <code>net.peer.name</code> and <code>net.peer.port</code> (old) are no longer set; only <code>server.address</code> and <code>server.port</code> (stable). <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): allow modifying ReadWriteLogRecord properties (including hrTime, hrTimeObserved, and spanContext) in accordance with the OpenTelemetry Logs specification <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6923">#6923</a> <a href="https://github.com/Babul422"><code>@Babul422</code></a></li> <li>feat(sdk-node): emit a deprecation warning when the <code>JaegerPropagator</code> is selected via <code>OTEL_PROPAGATORS</code> or declarative config; use <code>tracecontext</code> instead. <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>feat(instrumentation-http): set <code>error.type</code> to status code in metrics for error requests. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6919">#6919</a> <a href="https://github.com/raphael-theriault-swi"><code>@raphael-theriault-swi</code></a></li> </ul> <h2>experimental/v0.220.0</h2> <h2>0.220.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>refactor(sdk-logs)!: refactor BatchLogRecordProcessor constructor signature <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6817">#6817</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li>(user-facing): <code>BatchLogRecordProcessor</code> now takes a single <code>options</code> object with all possible properties, instead of two separate arguments. For example, before <code>new BatchLogRecordProcessor(exporter, { maxQueueSize: 1000 })</code>, after <code>new BatchLogRecordProcessor({ exporter, maxQueueSize: 1000 })</code>.</li> <li><code>interface BufferConfig</code> -> <code>interface BatchLogRecordProcessorOptions</code>, and now includes the <code>exporter</code> property</li> <li><code>interface BatchLogRecordProcessorBrowserConfig</code> -> <code>interface BatchLogRecordProcessorBrowserOptions</code></li> <li>(user-facing): <code>SimpleLogRecordProcessor</code> now takes a single <code>options</code> object with all possible properties. For example, before <code>new SimpleLogRecordProcessor(exporter)</code>, after <code>new SimpleLogRecordProcessor({ exporter })</code>. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6836">#6836</a></li> </ul> </li> <li>refactor(configuration)!: change config file parsing to <em>not</em> add default values, nor merge <code>*_list</code> fields <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6765">#6765</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li>Responsibility for handling <a href="https://opentelemetry.io/docs/specs/otel/configuration/sdk/#create">declarative config "nullBehavior" and "defaultBehavior"</a> belongs in the "create" handling, currently in the "sdk-node" package.</li> </ul> </li> <li>docs(shim-opencensus): <em>Notice</em>: The <code>@opentracing/shim-opencensus</code> package will be removed in SDK 3.x, planned for approximately September 2026. <ul> <li>The <a href="https://opentelemetry.io/blog/2026/deprecating-opencensus-compatibility/">OpenCensus</a> and <a href="https://opentelemetry.io/blog/2026/deprecating-opentracing-compatibility/">OpenTracing</a> compatibility requirements in the OpenTelemetry specification have been deprecated.</li> </ul> </li> <li>chore(sdk-node)!: Drop support for deprecated OpenCensusMetricProducer from declarative config</li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(configuration): bump config schema to v1.1.0; rename <code>without_scope_info</code> → <code>scope_info_enabled</code> and <code>without_target_info/development</code> → <code>target_info_enabled/development</code> on the Prometheus pull exporter (semantics inverted), rename <code>with_resource_constant_labels</code> → <code>resource_constant_labels</code>. Validate <code>file_format</code> per the configuration versioning spec: accept any minor version of major <code>1</code> (e.g. <code>1.0</code>, <code>1.1</code>), warn when the minor version is newer than supported, and reject other major versions. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6781">#6781</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(sdk-node): wire up <code>id_generator</code> from declarative config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6782">#6782</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(sdk-node): wire up <code>tracer_provider.sampler</code> from declarative config (always_on, always_off, trace_id_ratio_based, parent_based); unrecognized variants warn and fall back to ParentBased(AlwaysOn) <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6506">#6506</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(propagator-env-carrier): empty name normalization <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6827">#6827</a> <a href="https://github.com/pellared"><code>@pellared</code></a></li> <li>feat(propagator-env-carrier): make <code>EnvironmentGetter</code> read the current <code>process.env</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6853">#6853</a> <a href="https://github.com/pellared"><code>@pellared</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-logs): stop <code>Logger.emit()</code> doing work (record construction, metrics, processor <code>onEmit</code>) after the <code>LoggerProvider</code> has shut down <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6826">#6826</a> <a href="https://github.com/anneheartrecord"><code>@anneheartrecord</code></a></li> <li>fix(sdk-node): pass all config properties (endpoint, headers, timeout, TLS, compression, temporality preference, default histogram aggregation) to OTLP metric exporters in declarative config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6814">#6814</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>fix(sdk-logs): default BatchLogRecordProcessor <code>scheduleDelayMillis</code> is 1000 <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6796">#6796</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(configuration): percent-decode keys and values in <code>resource.attributes_list</code> per spec <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6787">#6787</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>fix(configuration): default <code>log_level</code> to <code>info</code> in env-based config initialization for consistency with file-based config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6788">#6788</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/76fa6b509e2b48d9cbee31cb37a2efc61dc4d384"><code>76fa6b5</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6942">#6942</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/37878969526151bcda4449d92b0e69e913e0081e"><code>3787896</code></a> chore(deps): update dependency webpack-cli to v7.2.1 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6934">#6934</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/be5f757aeea424130834183df8e1726b5797c636"><code>be5f757</code></a> fix(deps): update dependency body-parser to v2.3.0 [security] (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6941">#6941</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f6d8fbe74242dbce7cd5c79ec4fca8617b9936bb"><code>f6d8fbe</code></a> chore(deps): lock file maintenance (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6559">#6559</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/96127325ad0f158d55c19830aa20216eef65cf49"><code>9612732</code></a> chore: remove examples/dice from workspaces (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6937">#6937</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/7107906d0ad48fb4c3b4c161de0e195cbe2b9059"><code>7107906</code></a> chore: start using min-release-age in .npmrc, disable minimumReleaseAge for r...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a7e5d11a3987427f61c7e51a5e0f55f057945d3d"><code>a7e5d11</code></a> chore(deps): update dependency webpack to v5.108.4 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6933">#6933</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/af7a82de767f87e30c2871fe88526c528e06b84d"><code>af7a82d</code></a> chore(deps): update dependency msw to v2.15.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6831">#6831</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b9f57c622f244ed7d7f671b02159e6c1c378a3c4"><code>b9f57c6</code></a> chore(deps): update dependency <code>@types/webpack-env</code> to v1.18.8 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6877">#6877</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/cbb4abf849e40b154144ec35dfa20b597b2edc0a"><code>cbb4abf</code></a> chore(deps): update ubuntu docker tag to v26 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6635">#6635</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.219.0...experimental/v0.221.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/exporter-trace-otlp-proto` from 0.219.0 to 0.221.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/exporter-trace-otlp-proto's releases</a>.</em></p> <blockquote> <h2>experimental/v0.221.0</h2> <h2>0.221.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>feat(sdk-logs)!: configure the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6931">#6931</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a> <ul> <li>(user-facing): <code>LoggerProviderOptions.forceFlushTimeoutMillis</code> has been removed; pass <code>timeoutMillis</code> to <code>LoggerProvider.forceFlush()</code> instead.</li> </ul> </li> <li>feat(instrumentation-http)!: emit only stable HTTP semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes HTTP attribute or metric emission — old (v1.7.0) and duplicate (<code>http</code>/<code>http/dup</code>) semconv outputs have been removed. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-fetch)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-xml-http-request)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-grpc)!: emit only stable network semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes attribute emission — <code>net.peer.name</code> and <code>net.peer.port</code> (old) are no longer set; only <code>server.address</code> and <code>server.port</code> (stable). <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): allow modifying ReadWriteLogRecord properties (including hrTime, hrTimeObserved, and spanContext) in accordance with the OpenTelemetry Logs specification <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6923">#6923</a> <a href="https://github.com/Babul422"><code>@Babul422</code></a></li> <li>feat(sdk-node): emit a deprecation warning when the <code>JaegerPropagator</code> is selected via <code>OTEL_PROPAGATORS</code> or declarative config; use <code>tracecontext</code> instead. <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>feat(instrumentation-http): set <code>error.type</code> to status code in metrics for error requests. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6919">#6919</a> <a href="https://github.com/raphael-theriault-swi"><code>@raphael-theriault-swi</code></a></li> </ul> <h2>experimental/v0.220.0</h2> <h2>0.220.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>refactor(sdk-logs)!: refactor BatchLogRecordProcessor constructor signature <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6817">#6817</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li>(user-facing): <code>BatchLogRecordProcessor</code> now takes a single <code>options</code> object with all possible properties, instead of two separate arguments. For example, before <code>new BatchLogRecordProcessor(exporter, { maxQueueSize: 1000 })</code>, after <code>new BatchLogRecordProcessor({ exporter, maxQueueSize: 1000 })</code>.</li> <li><code>interface BufferConfig</code> -> <code>interface BatchLogRecordProcessorOptions</code>, and now includes the <code>exporter</code> property</li> <li><code>interface BatchLogRecordProcessorBrowserConfig</code> -> <code>interface BatchLogRecordProcessorBrowserOptions</code></li> <li>(user-facing): <code>SimpleLogRecordProcessor</code> now takes a single <code>options</code> object with all possible properties. For example, before <code>new SimpleLogRecordProcessor(exporter)</code>, after <code>new SimpleLogRecordProcessor({ exporter })</code>. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6836">#6836</a></li> </ul> </li> <li>refactor(configuration)!: change config file parsing to <em>not</em> add default values, nor merge <code>*_list</code> fields <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6765">#6765</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li>Responsibility for handling <a href="https://opentelemetry.io/docs/specs/otel/configuration/sdk/#create">declarative config "nullBehavior" and "defaultBehavior"</a> belongs in the "create" handling, currently in the "sdk-node" package.</li> </ul> </li> <li>docs(shim-opencensus): <em>Notice</em>: The <code>@opentracing/shim-opencensus</code> package will be removed in SDK 3.x, planned for approximately September 2026. <ul> <li>The <a href="https://opentelemetry.io/blog/2026/deprecating-opencensus-compatibility/">OpenCensus</a> and <a href="https://opentelemetry.io/blog/2026/deprecating-opentracing-compatibility/">OpenTracing</a> compatibility requirements in the OpenTelemetry specification have been deprecated.</li> </ul> </li> <li>chore(sdk-node)!: Drop support for deprecated OpenCensusMetricProducer from declarative config</li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(configuration): bump config schema to v1.1.0; rename <code>without_scope_info</code> → <code>scope_info_enabled</code> and <code>without_target_info/development</code> → <code>target_info_enabled/development</code> on the Prometheus pull exporter (semantics inverted), rename <code>with_resource_constant_labels</code> → <code>resource_constant_labels</code>. Validate <code>file_format</code> per the configuration versioning spec: accept any minor version of major <code>1</code> (e.g. <code>1.0</code>, <code>1.1</code>), warn when the minor version is newer than supported, and reject other major versions. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6781">#6781</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(sdk-node): wire up <code>id_generator</code> from declarative config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6782">#6782</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(sdk-node): wire up <code>tracer_provider.sampler</code> from declarative config (always_on, always_off, trace_id_ratio_based, parent_based); unrecognized variants warn and fall back to ParentBased(AlwaysOn) <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6506">#6506</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>feat(propagator-env-carrier): empty name normalization <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6827">#6827</a> <a href="https://github.com/pellared"><code>@pellared</code></a></li> <li>feat(propagator-env-carrier): make <code>EnvironmentGetter</code> read the current <code>process.env</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6853">#6853</a> <a href="https://github.com/pellared"><code>@pellared</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-logs): stop <code>Logger.emit()</code> doing work (record construction, metrics, processor <code>onEmit</code>) after the <code>LoggerProvider</code> has shut down <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6826">#6826</a> <a href="https://github.com/anneheartrecord"><code>@anneheartrecord</code></a></li> <li>fix(sdk-node): pass all config properties (endpoint, headers, timeout, TLS, compression, temporality preference, default histogram aggregation) to OTLP metric exporters in declarative config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6814">#6814</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>fix(sdk-logs): default BatchLogRecordProcessor <code>scheduleDelayMillis</code> is 1000 <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6796">#6796</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(configuration): percent-decode keys and values in <code>resource.attributes_list</code> per spec <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6787">#6787</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> <li>fix(configuration): default <code>log_level</code> to <code>info</code> in env-based config initialization for consistency with file-based config <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6788">#6788</a> <a href="https://github.com/MikeGoldsmith"><code>@MikeGoldsmith</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/76fa6b509e2b48d9cbee31cb37a2efc61dc4d384"><code>76fa6b5</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6942">#6942</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/37878969526151bcda4449d92b0e69e913e0081e"><code>3787896</code></a> chore(deps): update dependency webpack-cli to v7.2.1 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6934">#6934</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/be5f757aeea424130834183df8e1726b5797c636"><code>be5f757</code></a> fix(deps): update dependency body-parser to v2.3.0 [security] (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6941">#6941</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f6d8fbe74242dbce7cd5c79ec4fca8617b9936bb"><code>f6d8fbe</code></a> chore(deps): lock file maintenance (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6559">#6559</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/96127325ad0f158d55c19830aa20216eef65cf49"><code>9612732</code></a> chore: remove examples/dice from workspaces (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6937">#6937</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/7107906d0ad48fb4c3b4c161de0e195cbe2b9059"><code>7107906</code></a> chore: start using min-release-age in .npmrc, disable minimumReleaseAge for r...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a7e5d11a3987427f61c7e51a5e0f55f057945d3d"><code>a7e5d11</code></a> chore(deps): update dependency webpack to v5.108.4 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6933">#6933</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/af7a82de767f87e30c2871fe88526c528e06b84d"><code>af7a82d</code></a> chore(deps): update dependency msw to v2.15.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6831">#6831</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b9f57c622f244ed7d7f671b02159e6c1c378a3c4"><code>b9f57c6</code></a> chore(deps): update dependency <code>@types/webpack-env</code> to v1.18.8 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6877">#6877</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/cbb4abf849e40b154144ec35dfa20b597b2edc0a"><code>cbb4abf</code></a> chore(deps): update ubuntu docker tag to v26 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6635">#6635</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.219.0...experimental/v0.221.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/instrumentation-host-metrics` from 0.2.0 to 0.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/releases">@opentelemetry/instrumentation-host-metrics's releases</a>.</em></p> <blockquote> <h2>instrumentation-host-metrics: v0.4.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.3.0...instrumentation-host-metrics-v0.4.0">0.4.0</a> (2026-07-23)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3629">#3629</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/466d5def474cf251217881322ed4db13fad96b86">466d5de</a>)</li> </ul> <h2>instrumentation-console: v0.3.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-console-v0.2.0...instrumentation-console-v0.3.0">0.3.0</a> (2026-07-23)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3629">#3629</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/466d5def474cf251217881322ed4db13fad96b86">466d5de</a>)</li> </ul> <h2>sampler-aws-xray: v0.3.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/sampler-aws-xray-v0.2.0...sampler-aws-xray-v0.3.0">0.3.0</a> (2026-07-23)</h2> <h3>⚠ BREAKING CHANGES</h3> <ul> <li>only emit stable http, network and database attributes (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3585">#3585</a>)</li> </ul> <h3>Features</h3> <ul> <li>only emit stable http, network and database attributes (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3585">#3585</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5b7dd0e102e940d653e04b08b5a1b721a8271037">5b7dd0e</a>)</li> </ul> <h2>instrumentation-host-metrics: v0.3.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.2.0...instrumentation-host-metrics-v0.3.0">0.3.0</a> (2026-07-03)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3593">#3593</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/6dfb532ac16889c2f8656f2d9132a290e68cb570">6dfb532</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-host-metrics/CHANGELOG.md">@opentelemetry/instrumentation-host-metrics's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.3.0...instrumentation-host-metrics-v0.4.0">0.4.0</a> (2026-07-23)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3629">#3629</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/466d5def474cf251217881322ed4db13fad96b86">466d5de</a>)</li> </ul> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.2.0...instrumentation-host-metrics-v0.3.0">0.3.0</a> (2026-07-03)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3593">#3593</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/6dfb532ac16889c2f8656f2d9132a290e68cb570">6dfb532</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commits/v0.4.0/packages/instrumentation-host-metrics">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for <code>@opentelemetry/instrumentation-host-metrics</code> since your current version.</p> </details> <br /> Updates `@opentelemetry/instrumentation-runtime-node` from 0.32.0 to 0.34.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/releases">@opentelemetry/instrumentation-runtime-node's releases</a>.</em></p> <blockquote> <h2>instrumentation-runtime-node: v0.34.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.33.0...instrumentation-runtime-node-v0.34.0">0.34.0</a> (2026-07-23)</h2> <h3>⚠ BREAKING CHANGES</h3> <ul> <li><strong>instrumentation-runtime-node:</strong> remove deprecated v8js.memory.heap.limit metric (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3632">#3632</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3629">#3629</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/466d5def474cf251217881322ed4db13fad96b86">466d5de</a>)</li> <li><strong>instrumentation-runtime-node:</strong> remove deprecated v8js.memory.heap.limit metric (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3632">#3632</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/f69829245952b95f5d1827b0a6cee67499f85bc6">f698292</a>)</li> </ul> <h2>instrumentation-runtime-node: v0.33.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.32.0...instrumentation-runtime-node-v0.33.0">0.33.0</a> (2026-07-03)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3593">#3593</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/6dfb532ac16889c2f8656f2d9132a290e68cb570">6dfb532</a>)</li> <li><strong>instrumentation-runtime-node:</strong> add active resource gauge (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3361">#3361</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/f3d38e25cdb7a158a47c24fc344cb4e9c6f24252">f3d38e2</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-runtime-node/CHANGELOG.md">@opentelemetry/instrumentation-runtime-node's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.33.0...instrumentation-runtime-node-v0.34.0">0.34.0</a> (2026-07-23)</h2> <h3>⚠ BREAKING CHANGES</h3> <ul> <li><strong>instrumentation-runtime-node:</strong> remove deprecated v8js.memory.heap.limit metric (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3632">#3632</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3629">#3629</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/466d5def474cf251217881322ed4db13fad96b86">466d5de</a>)</li> <li><strong>instrumentation-runtime-node:</strong> remove deprecated v8js.memory.heap.limit metric (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3632">#3632</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/f69829245952b95f5d1827b0a6cee67499f85bc6">f698292</a>)</li> </ul> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.32.0...instrumentation-runtime-node-v0.33.0">0.33.0</a> (2026-07-03)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3593">#3593</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/6dfb532ac16889c2f8656f2d9132a290e68cb570">6dfb532</a>)</li> <li><strong>instrumentation-runtime-node:</strong> add active resource gauge (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3361">#3361</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/f3d38e25cdb7a158a47c24fc344cb4e9c6f24252">f3d38e2</a>)</li> </ul> </blockquote> </details> <details> <s…
# Add CODEOWNERS File to Repository ### Chore 🔧 Added a `CODEOWNERS` file to the repository to define default code ownership for all files. ### Changes * `.github/CODEOWNERS`: New file that assigns `@cap-js/node-js-runtime` as the default owner for all files in the repository (`*`). This ensures the team is automatically requested for review on any pull request affecting the codebase. - [ ] 🔄 Regenerate and Update Summary <details> <summary>PR Bot Information</summary> **Version:** `1.31.2` - Output Template: [Default Template](https://github.tools.sap/Code-Change-Intelligence/pr-bot/blob/main/src/services/llm/prompts/summary_default_output_template.md) - Summary Prompt: [Default Prompt](https://github.tools.sap/Code-Change-Intelligence/pr-bot/blob/main/src/services/llm/prompts/summary_instructions_prompt.md) - File Content Strategy: Full file content - Event Trigger: `pull_request.opened` - LLM: `anthropic--claude-4.6-sonnet` - Correlation ID: `d792fa50-a570-11f1-88af-cb6b0d808e90` </details>
hm23
previously approved these changes
Sep 1, 2026
Closes #411. ### Problem The span processor was hard-coded off `NODE_ENV`: `BatchSpanProcessor` in production, `SimpleSpanProcessor` otherwise. There was no way to override it (e.g. force `SimpleSpanProcessor` in a prod-like env for immediate export, or tune batching `config`). ### Change Select the processor from config: `cds.requires.telemetry.tracing.processor = { kind, config? }`. - `kind` ∈ { `BatchSpanProcessor` (default), `SimpleSpanProcessor` } - `config` is passed through to the processor's constructor - The `[development]` profile defaults to `SimpleSpanProcessor` — so the previous `NODE_ENV`-based behavior is preserved (production → Batch, dev → Simple), just now overridable. - An unknown `kind` throws `Unknown span processor <kind>`, mirroring the existing `sampler`/`propagator` kind-validation in `lib/tracing/index.js`. ### Tests - `test/tracing-processor-simple.test.js` — dev profile boot activates `SimpleSpanProcessor`. - `test/tracing-processor-batch.test.js` — explicit `[tracing-batch-processor]` override activates `BatchSpanProcessor` (a true `production` boot isn't feasible in the test app — it requires `@cap-js/hana`; the production default is covered via this explicit override). - `test/tracing-processor-unknown.test.js` — an unknown kind throws via the real factory (verified non-vacuous: removing the guard makes it fail). ### Docs - README: new **Span Processor** config section. - CHANGELOG: `Added` bullet under 2.1.0.
…436) - Add telemetry-to-caas kind definition in package.json - Add getCredsForCaaS() to extract credentials from caas-service binding - Add augmentCaaSCreds() to configure OTLP endpoint URL - Handle CaaS in tracing and metrics exporters Note: CaaS requires mTLS authentication with SAP-signed certificates. The certificate must be obtained separately via BTP Certificate Service. --------- Co-authored-by: sjvans <30337871+sjvans@users.noreply.github.com> Co-authored-by: Sebastian Van Syckel <sebastian.van.syckel@sap.com>
…ith 12 updates (#505) Bumps the dev-dependencies group with 12 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@cap-js/cds-test](https://github.com/cap-js/cds-test) | `1.0.1` | `1.0.2` | | [@cap-js/sqlite](https://github.com/cap-js/cds-dbs) | `3.0.2` | `3.1.0` | | [@opentelemetry/exporter-metrics-otlp-grpc](https://github.com/open-telemetry/opentelemetry-js) | `0.219.0` | `0.222.0` | | [@opentelemetry/exporter-metrics-otlp-proto](https://github.com/open-telemetry/opentelemetry-js) | `0.219.0` | `0.222.0` | | [@opentelemetry/exporter-trace-otlp-grpc](https://github.com/open-telemetry/opentelemetry-js) | `0.219.0` | `0.222.0` | | [@opentelemetry/exporter-trace-otlp-proto](https://github.com/open-telemetry/opentelemetry-js) | `0.219.0` | `0.222.0` | | [@opentelemetry/instrumentation-host-metrics](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/HEAD/packages/instrumentation-host-metrics) | `0.2.0` | `0.5.0` | | [@opentelemetry/instrumentation-runtime-node](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/HEAD/packages/instrumentation-runtime-node) | `0.32.0` | `0.35.0` | | [@sap/cds-mtxs](https://cap.cloud.sap/) | `4.0.1` | `4.1.0` | | [axios](https://github.com/axios/axios) | `1.18.1` | `1.20.0` | | [eslint](https://github.com/eslint/eslint) | `10.6.0` | `10.10.0` | | [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) | `30.4.2` | `30.5.1` | Updates `@cap-js/cds-test` from 1.0.1 to 1.0.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/cap-js/cds-test/releases">@cap-js/cds-test's releases</a>.</em></p> <blockquote> <h2>v1.0.2</h2> <h3>Fixed</h3> <ul> <li><code>Buffer</code> request bodies are no longer serialized via <code>JSON.stringify()</code></li> <li>In <code>chest</code>-powered tests, <code>inspectPort</code> configuration will be passed to <code>node:test.run(...)</code> when debugging</li> <li>In <code>chest</code>-powered tests, <code>concurrency</code> of <code>node:test.run(...)</code> will be limitted to <code>1</code> to enable debugging</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md">@cap-js/cds-test's changelog</a>.</em></p> <blockquote> <h2>[1.0.2] - 2026-08-04</h2> <h3>Fixed</h3> <ul> <li><code>Buffer</code> request bodies are no longer serialized via <code>JSON.stringify()</code></li> <li>In <code>chest</code>-powered tests, <code>inspectPort</code> configuration will be passed to <code>node:test.run(...)</code> when debugging</li> <li>In <code>chest</code>-powered tests, <code>concurrency</code> of <code>node:test.run(...)</code> will be limitted to <code>1</code> to enable debugging</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/cap-js/cds-test/commit/1304e9dcf0b1e59682cbb423ae2f6f2f268bf69a"><code>1304e9d</code></a> fix: pass debug flag to runner (<a href="https://redirect.github.com/cap-js/cds-test/issues/96">#96</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/540bc36058ad48dc29b66395eca49903b4adc84a"><code>540bc36</code></a> Bump <code>@cap-js/sqlite</code> from 2.4.0 to 3.0.2 (<a href="https://redirect.github.com/cap-js/cds-test/issues/102">#102</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/4f150dfa04bbb96ce1d5cafbba499cfa0159b7a2"><code>4f150df</code></a> fix(naxios): send Buffer request bodies as raw bytes (<a href="https://redirect.github.com/cap-js/cds-test/issues/103">#103</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/4d6ca38e165d2f338b433a262d252f2412a04812"><code>4d6ca38</code></a> feat: remove <code>sleep</code> API (<a href="https://redirect.github.com/cap-js/cds-test/issues/98">#98</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/6d8eac954c61f0e6e56d06281212e12f826300e3"><code>6d8eac9</code></a> chore: open dependency to cap-js/sqlite 3 (<a href="https://redirect.github.com/cap-js/cds-test/issues/94">#94</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/7456cb5194babf19ca82add11f4cea6e10adcf15"><code>7456cb5</code></a> fix: fulfilled and rejected can be awaited (<a href="https://redirect.github.com/cap-js/cds-test/issues/93">#93</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/fa7721a04feb304839bbf2ade9e459196575d01e"><code>fa7721a</code></a> Bump qs from 6.15.1 to 6.15.2 in the npm_and_yarn group across 1 directory (<a href="https://redirect.github.com/cap-js/cds-test/issues/91">#91</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/7c833de09ad800a2502cfc73c96a6531cc8b5598"><code>7c833de</code></a> fix: .to.be.fullfilled/rejected must return this (<a href="https://redirect.github.com/cap-js/cds-test/issues/92">#92</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/0f1a65c82c24ff6c499f9cd50dba220441bf63b5"><code>0f1a65c</code></a> Bump <code>@cap-js/sqlite</code> from 2.2.0 to 2.4.0 (<a href="https://redirect.github.com/cap-js/cds-test/issues/88">#88</a>)</li> <li><a href="https://github.com/cap-js/cds-test/commit/90e6cf560bd54c8c223836d9349cecef86c48348"><code>90e6cf5</code></a> Temporarily reverting cds.test --with-mocks</li> <li>Additional commits viewable in <a href="https://github.com/cap-js/cds-test/compare/v1.0.1...v1.0.2">compare view</a></li> </ul> </details> <br /> Updates `@cap-js/sqlite` from 3.0.2 to 3.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/cap-js/cds-dbs/releases">@cap-js/sqlite's releases</a>.</em></p> <blockquote> <h2>db-service: v3.1.0</h2> <h2><a href="https://github.com/cap-js/cds-dbs/compare/db-service-v3.0.1...db-service-v3.1.0">3.1.0</a> (2026-09-07)</h2> <h3>Added</h3> <ul> <li>rank $search results by relevance (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1725">#1725</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/bc931601a721f7c9e00b89e6844ba064352b541d">bc93160</a>)</li> </ul> <h3>Fixed</h3> <ul> <li><strong>cqn4sql:</strong> reject overly nested query expressions instead of crashing (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1712">#1712</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/29a45b7daadbc77433b882148700d73c00efae62">29a45b7</a>)</li> <li>don't throw when releasing/destroying a resource that's no longer in the pool (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1696">#1696</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/5d3b277a1cf7cac02e41f2f24975a8e9473e5b5e">5d3b277</a>)</li> <li>exclude cds.Vector from wildcard select expansion (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1716">#1716</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/398bacc2a74883dcd93acba288deae362570a4c1">398bacc</a>)</li> <li>INSERT.from(SELECT) used non-existent <code>value</code> (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1565">#1565</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/fd98844c83a78d6cf2b0b71344d3ee1d88528106">fd98844</a>)</li> <li><strong>pool:</strong> recover lost connection after stale acquire timeout (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1724">#1724</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/cf6af991d02be7cf5f861e2a424d4d733b8f9238">cf6af99</a>)</li> <li>pql groupby path expression (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1700">#1700</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/82b5e0385e680321f30c352f0f78ade6d25259a6">82b5e03</a>)</li> </ul> <h2>hana: v3.1.0</h2> <h2><a href="https://github.com/cap-js/cds-dbs/compare/hana-v3.0.2...hana-v3.1.0">3.1.0</a> (2026-09-07)</h2> <h3>Added</h3> <ul> <li>cache prepare statement for reuse (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1496">#1496</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/01cb9815bf56836d9ea9ea1f81859d2c63a56b62">01cb981</a>)</li> <li>rank $search results by relevance (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1725">#1725</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/bc931601a721f7c9e00b89e6844ba064352b541d">bc93160</a>)</li> </ul> <h3>Fixed</h3> <ul> <li><strong>hana:</strong> propagate error codes (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1695">#1695</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/f0d2fa10b6530b36811028399a3f4a96faf2adc9">f0d2fa1</a>)</li> <li>INSERT.from(SELECT) used non-existent <code>value</code> (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1565">#1565</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/fd98844c83a78d6cf2b0b71344d3ee1d88528106">fd98844</a>)</li> <li>usage of expands in object mode streaming (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1705">#1705</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/7a7688f580701872ba8510f5709915e0805cbea0">7a7688f</a>)</li> </ul> <h3>Dependencies</h3> <ul> <li>The following workspace dependencies were updated <ul> <li>dependencies <ul> <li><code>@cap-js/db-service</code> bumped from ^3.0.1 to ^3.1.0</li> </ul> </li> </ul> </li> </ul> <h2>postgres: v3.1.0</h2> <h2><a href="https://github.com/cap-js/cds-dbs/compare/postgres-v3.0.1...postgres-v3.1.0">3.1.0</a> (2026-09-07)</h2> <h3>Added</h3> <ul> <li>Add support for <code>cds.Vector</code> on SQLite and Postgres (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1676">#1676</a>) (<a href="https://github.com/cap-js/cds-dbs/commit/f0d220324e8a1c7489966545000476bfd33f6b17">f0d2203</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/cap-js/cds-dbs/commit/dba03e9348c9298369d7ebf446070177845b8268"><code>dba03e9</code></a> chore: release main (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1703">#1703</a>)</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/bc931601a721f7c9e00b89e6844ba064352b541d"><code>bc93160</code></a> feat: rank $search results by relevance (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1725">#1725</a>)</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/633db11a4db43b44fa72d9fc202c540d75fbdacd"><code>633db11</code></a> test(<code>cqn4sql</code>): refactor calculated elements test suite (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1643">#1643</a>)</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/cf6af991d02be7cf5f861e2a424d4d733b8f9238"><code>cf6af99</code></a> fix(pool): recover lost connection after stale acquire timeout (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1724">#1724</a>)</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/c9228a69cdfb46f51d3e585e0cc097ec1e735255"><code>c9228a6</code></a> chore(deps-dev): bump <code>@sap/hana-client</code> from 2.29.25 to 2.29.27 in the depende...</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/1443f85963bb93a5f4a74190b75eaf3f4fa26eeb"><code>1443f85</code></a> chore(deps): bump qs from 6.15.3 to 6.16.0 (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1722">#1722</a>)</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/398bacc2a74883dcd93acba288deae362570a4c1"><code>398bacc</code></a> fix: exclude cds.Vector from wildcard select expansion (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1716">#1716</a>)</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/fd98844c83a78d6cf2b0b71344d3ee1d88528106"><code>fd98844</code></a> fix: INSERT.from(SELECT) used non-existent <code>value</code> (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1565">#1565</a>)</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/01cb9815bf56836d9ea9ea1f81859d2c63a56b62"><code>01cb981</code></a> feat: cache prepare statement for reuse (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1496">#1496</a>)</li> <li><a href="https://github.com/cap-js/cds-dbs/commit/29a45b7daadbc77433b882148700d73c00efae62"><code>29a45b7</code></a> fix(cqn4sql): reject overly nested query expressions instead of crashing (<a href="https://redirect.github.com/cap-js/cds-dbs/issues/1712">#1712</a>)</li> <li>Additional commits viewable in <a href="https://github.com/cap-js/cds-dbs/compare/hana-v3.0.2...hana-v3.1.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/exporter-metrics-otlp-grpc` from 0.219.0 to 0.222.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/exporter-metrics-otlp-grpc's releases</a>.</em></p> <blockquote> <h2>experimental/v0.222.0</h2> <h2>0.222.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>fix(sdk-node)!: fail-fast on Propagator creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6930">#6930</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on MeterProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6954">#6954</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on TracerProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6962">#6962</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on Resource creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6989">#6989</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li> <p>This also breaks some usage of <code>startNodeSDK()</code> for <em>environment-based</em> config, i.e. when <em>not</em> using a config file. For example with <code>OTEL_NODE_RESOURCE_DETECTORS=all</code>, it results in an error message and a no-op SDK. (This does not impact users of <code>new NodeSDK()</code> -- the currently recommended mechanism to start an SDK using this package.)</p> <pre lang="bash"><code>Could not create OpenTelemetry SDK from configuration, SDK will not be setup: unknown ExperimentalResourceDetector name in configuration: "container" </code></pre> </li> </ul> </li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): deprecate <code>SdkLogRecord</code> in favor of <code>ReadWriteLogRecord</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6939">#6939</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(instrumentation-http): redact sensitive query parameters on incoming (server) spans; add <code>redactedQueryParamsServer</code> config option <a href="https://github.com/dyladan"><code>@dyladan</code></a></li> <li>fix(sdk-node): support <code>headers_list</code> when creating OTLP exporters from declarative configuration <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6953">#6953</a> <a href="https://github.com/JacksonWeber"><code>@JacksonWeber</code></a></li> </ul> <h3>:books: Documentation</h3> <ul> <li>docs(sdk-logs): mark logger configuration as experimental <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6996">#6996</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>docs(configuration): document the <code>ConfigModel</code> suffix naming convention for exported types <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6612">#6612</a> <a href="https://github.com/vedantchalke36"><code>@vedantchalke36</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>refactor(sampler-jaeger-remote): remove <code>axios</code> dependency and use <code>fetch</code> to get the sampler configuration from Jaeger API <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6963">#6963</a> <a href="https://github.com/david-luna"><code>@david-luna</code></a></li> </ul> <h2>experimental/v0.221.0</h2> <h2>0.221.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>feat(sdk-logs)!: configure the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6931">#6931</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a> <ul> <li>(user-facing): <code>LoggerProviderOptions.forceFlushTimeoutMillis</code> has been removed; pass <code>timeoutMillis</code> to <code>LoggerProvider.forceFlush()</code> instead.</li> </ul> </li> <li>feat(instrumentation-http)!: emit only stable HTTP semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes HTTP attribute or metric emission — old (v1.7.0) and duplicate (<code>http</code>/<code>http/dup</code>) semconv outputs have been removed. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-fetch)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-xml-http-request)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-grpc)!: emit only stable network semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes attribute emission — <code>net.peer.name</code> and <code>net.peer.port</code> (old) are no longer set; only <code>server.address</code> and <code>server.port</code> (stable). <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): allow modifying ReadWriteLogRecord properties (including hrTime, hrTimeObserved, and spanContext) in accordance with the OpenTelemetry Logs specification <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6923">#6923</a> <a href="https://github.com/Babul422"><code>@Babul422</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.219.0...experimental/v0.222.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/exporter-metrics-otlp-proto` from 0.219.0 to 0.222.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/exporter-metrics-otlp-proto's releases</a>.</em></p> <blockquote> <h2>experimental/v0.222.0</h2> <h2>0.222.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>fix(sdk-node)!: fail-fast on Propagator creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6930">#6930</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on MeterProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6954">#6954</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on TracerProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6962">#6962</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on Resource creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6989">#6989</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li> <p>This also breaks some usage of <code>startNodeSDK()</code> for <em>environment-based</em> config, i.e. when <em>not</em> using a config file. For example with <code>OTEL_NODE_RESOURCE_DETECTORS=all</code>, it results in an error message and a no-op SDK. (This does not impact users of <code>new NodeSDK()</code> -- the currently recommended mechanism to start an SDK using this package.)</p> <pre lang="bash"><code>Could not create OpenTelemetry SDK from configuration, SDK will not be setup: unknown ExperimentalResourceDetector name in configuration: "container" </code></pre> </li> </ul> </li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): deprecate <code>SdkLogRecord</code> in favor of <code>ReadWriteLogRecord</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6939">#6939</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(instrumentation-http): redact sensitive query parameters on incoming (server) spans; add <code>redactedQueryParamsServer</code> config option <a href="https://github.com/dyladan"><code>@dyladan</code></a></li> <li>fix(sdk-node): support <code>headers_list</code> when creating OTLP exporters from declarative configuration <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6953">#6953</a> <a href="https://github.com/JacksonWeber"><code>@JacksonWeber</code></a></li> </ul> <h3>:books: Documentation</h3> <ul> <li>docs(sdk-logs): mark logger configuration as experimental <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6996">#6996</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>docs(configuration): document the <code>ConfigModel</code> suffix naming convention for exported types <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6612">#6612</a> <a href="https://github.com/vedantchalke36"><code>@vedantchalke36</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>refactor(sampler-jaeger-remote): remove <code>axios</code> dependency and use <code>fetch</code> to get the sampler configuration from Jaeger API <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6963">#6963</a> <a href="https://github.com/david-luna"><code>@david-luna</code></a></li> </ul> <h2>experimental/v0.221.0</h2> <h2>0.221.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>feat(sdk-logs)!: configure the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6931">#6931</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a> <ul> <li>(user-facing): <code>LoggerProviderOptions.forceFlushTimeoutMillis</code> has been removed; pass <code>timeoutMillis</code> to <code>LoggerProvider.forceFlush()</code> instead.</li> </ul> </li> <li>feat(instrumentation-http)!: emit only stable HTTP semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes HTTP attribute or metric emission — old (v1.7.0) and duplicate (<code>http</code>/<code>http/dup</code>) semconv outputs have been removed. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-fetch)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-xml-http-request)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-grpc)!: emit only stable network semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes attribute emission — <code>net.peer.name</code> and <code>net.peer.port</code> (old) are no longer set; only <code>server.address</code> and <code>server.port</code> (stable). <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): allow modifying ReadWriteLogRecord properties (including hrTime, hrTimeObserved, and spanContext) in accordance with the OpenTelemetry Logs specification <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6923">#6923</a> <a href="https://github.com/Babul422"><code>@Babul422</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.219.0...experimental/v0.222.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/exporter-trace-otlp-grpc` from 0.219.0 to 0.222.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/exporter-trace-otlp-grpc's releases</a>.</em></p> <blockquote> <h2>experimental/v0.222.0</h2> <h2>0.222.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>fix(sdk-node)!: fail-fast on Propagator creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6930">#6930</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on MeterProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6954">#6954</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on TracerProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6962">#6962</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on Resource creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6989">#6989</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li> <p>This also breaks some usage of <code>startNodeSDK()</code> for <em>environment-based</em> config, i.e. when <em>not</em> using a config file. For example with <code>OTEL_NODE_RESOURCE_DETECTORS=all</code>, it results in an error message and a no-op SDK. (This does not impact users of <code>new NodeSDK()</code> -- the currently recommended mechanism to start an SDK using this package.)</p> <pre lang="bash"><code>Could not create OpenTelemetry SDK from configuration, SDK will not be setup: unknown ExperimentalResourceDetector name in configuration: "container" </code></pre> </li> </ul> </li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): deprecate <code>SdkLogRecord</code> in favor of <code>ReadWriteLogRecord</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6939">#6939</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(instrumentation-http): redact sensitive query parameters on incoming (server) spans; add <code>redactedQueryParamsServer</code> config option <a href="https://github.com/dyladan"><code>@dyladan</code></a></li> <li>fix(sdk-node): support <code>headers_list</code> when creating OTLP exporters from declarative configuration <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6953">#6953</a> <a href="https://github.com/JacksonWeber"><code>@JacksonWeber</code></a></li> </ul> <h3>:books: Documentation</h3> <ul> <li>docs(sdk-logs): mark logger configuration as experimental <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6996">#6996</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>docs(configuration): document the <code>ConfigModel</code> suffix naming convention for exported types <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6612">#6612</a> <a href="https://github.com/vedantchalke36"><code>@vedantchalke36</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>refactor(sampler-jaeger-remote): remove <code>axios</code> dependency and use <code>fetch</code> to get the sampler configuration from Jaeger API <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6963">#6963</a> <a href="https://github.com/david-luna"><code>@david-luna</code></a></li> </ul> <h2>experimental/v0.221.0</h2> <h2>0.221.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>feat(sdk-logs)!: configure the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6931">#6931</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a> <ul> <li>(user-facing): <code>LoggerProviderOptions.forceFlushTimeoutMillis</code> has been removed; pass <code>timeoutMillis</code> to <code>LoggerProvider.forceFlush()</code> instead.</li> </ul> </li> <li>feat(instrumentation-http)!: emit only stable HTTP semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes HTTP attribute or metric emission — old (v1.7.0) and duplicate (<code>http</code>/<code>http/dup</code>) semconv outputs have been removed. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-fetch)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-xml-http-request)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-grpc)!: emit only stable network semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes attribute emission — <code>net.peer.name</code> and <code>net.peer.port</code> (old) are no longer set; only <code>server.address</code> and <code>server.port</code> (stable). <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): allow modifying ReadWriteLogRecord properties (including hrTime, hrTimeObserved, and spanContext) in accordance with the OpenTelemetry Logs specification <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6923">#6923</a> <a href="https://github.com/Babul422"><code>@Babul422</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.219.0...experimental/v0.222.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/exporter-trace-otlp-proto` from 0.219.0 to 0.222.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/exporter-trace-otlp-proto's releases</a>.</em></p> <blockquote> <h2>experimental/v0.222.0</h2> <h2>0.222.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>fix(sdk-node)!: fail-fast on Propagator creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6930">#6930</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on MeterProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6954">#6954</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on TracerProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6962">#6962</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on Resource creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6989">#6989</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li> <p>This also breaks some usage of <code>startNodeSDK()</code> for <em>environment-based</em> config, i.e. when <em>not</em> using a config file. For example with <code>OTEL_NODE_RESOURCE_DETECTORS=all</code>, it results in an error message and a no-op SDK. (This does not impact users of <code>new NodeSDK()</code> -- the currently recommended mechanism to start an SDK using this package.)</p> <pre lang="bash"><code>Could not create OpenTelemetry SDK from configuration, SDK will not be setup: unknown ExperimentalResourceDetector name in configuration: "container" </code></pre> </li> </ul> </li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): deprecate <code>SdkLogRecord</code> in favor of <code>ReadWriteLogRecord</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6939">#6939</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(instrumentation-http): redact sensitive query parameters on incoming (server) spans; add <code>redactedQueryParamsServer</code> config option <a href="https://github.com/dyladan"><code>@dyladan</code></a></li> <li>fix(sdk-node): support <code>headers_list</code> when creating OTLP exporters from declarative configuration <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6953">#6953</a> <a href="https://github.com/JacksonWeber"><code>@JacksonWeber</code></a></li> </ul> <h3>:books: Documentation</h3> <ul> <li>docs(sdk-logs): mark logger configuration as experimental <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6996">#6996</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>docs(configuration): document the <code>ConfigModel</code> suffix naming convention for exported types <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6612">#6612</a> <a href="https://github.com/vedantchalke36"><code>@vedantchalke36</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>refactor(sampler-jaeger-remote): remove <code>axios</code> dependency and use <code>fetch</code> to get the sampler configuration from Jaeger API <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6963">#6963</a> <a href="https://github.com/david-luna"><code>@david-luna</code></a></li> </ul> <h2>experimental/v0.221.0</h2> <h2>0.221.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>feat(sdk-logs)!: configure the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6931">#6931</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a> <ul> <li>(user-facing): <code>LoggerProviderOptions.forceFlushTimeoutMillis</code> has been removed; pass <code>timeoutMillis</code> to <code>LoggerProvider.forceFlush()</code> instead.</li> </ul> </li> <li>feat(instrumentation-http)!: emit only stable HTTP semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes HTTP attribute or metric emission — old (v1.7.0) and duplicate (<code>http</code>/<code>http/dup</code>) semconv outputs have been removed. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-fetch)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-xml-http-request)!: emit only stable HTTP semantic conventions. The <code>semconvStabilityOptIn</code> instrumentation config option has been removed; old (v1.7.0) and duplicate semconv outputs are no longer emitted. <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> <li>feat(instrumentation-grpc)!: emit only stable network semantic conventions. The <code>OTEL_SEMCONV_STABILITY_OPT_IN</code> environment variable no longer changes attribute emission — <code>net.peer.name</code> and <code>net.peer.port</code> (old) are no longer set; only <code>server.address</code> and <code>server.port</code> (stable). <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6819">#6819</a> <a href="https://github.com/maryliag"><code>@maryliag</code></a></li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): allow modifying ReadWriteLogRecord properties (including hrTime, hrTimeObserved, and spanContext) in accordance with the OpenTelemetry Logs specification <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6923">#6923</a> <a href="https://github.com/Babul422"><code>@Babul422</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.219.0...experimental/v0.222.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/instrumentation-host-metrics` from 0.2.0 to 0.5.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/releases">@opentelemetry/instrumentation-host-metrics's releases</a>.</em></p> <blockquote> <h2>instrumentation-host-metrics: v0.5.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.4.0...instrumentation-host-metrics-v0.5.0">0.5.0</a> (2026-08-31)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3716">#3716</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/015582a5b839b942c7a6a0aa8a60d1665b16663f">015582a</a>)</li> </ul> <h2>instrumentation-console: v0.4.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-console-v0.3.0...instrumentation-console-v0.4.0">0.4.0</a> (2026-08-31)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3716">#3716</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/015582a5b839b942c7a6a0aa8a60d1665b16663f">015582a</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>instrumentation-console:</strong> restore console methods on disable when constructed with { enabled: true } (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3641">#3641</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/97c7f216886d331473dda34496b4be66e5ba2e52">97c7f21</a>)</li> </ul> <h2>instrumentation-host-metrics: v0.4.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.3.0...instrumentation-host-metrics-v0.4.0">0.4.0</a> (2026-07-23)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3629">#3629</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/466d5def474cf251217881322ed4db13fad96b86">466d5de</a>)</li> </ul> <h2>sampler-aws-xray: v0.3.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/sampler-aws-xray-v0.2.0...sampler-aws-xray-v0.3.0">0.3.0</a> (2026-07-23)</h2> <h3>⚠ BREAKING CHANGES</h3> <ul> <li>only emit stable http, network and database attributes (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3585">#3585</a>)</li> </ul> <h3>Features</h3> <ul> <li>only emit stable http, network and database attributes (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3585">#3585</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5b7dd0e102e940d653e04b08b5a1b721a8271037">5b7dd0e</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-host-metrics/CHANGELOG.md">@opentelemetry/instrumentation-host-metrics's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.4.0...instrumentation-host-metrics-v0.5.0">0.5.0</a> (2026-08-31)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3716">#3716</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/015582a5b839b942c7a6a0aa8a60d1665b16663f">015582a</a>)</li> </ul> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.3.0...instrumentation-host-metrics-v0.4.0">0.4.0</a> (2026-07-23)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3629">#3629</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/466d5def474cf251217881322ed4db13fad96b86">466d5de</a>)</li> </ul> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-host-metrics-v0.2.0...instrumentation-host-metrics-v0.3.0">0.3.0</a> (2026-07-03)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3593">#3593</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/6dfb532ac16889c2f8656f2d9132a290e68cb570">6dfb532</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commits/v0.5.0/packages/instrumentation-host-metrics">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new releaser for <code>@opentelemetry/instrumentation-host-metrics</code> since your current version.</p> </details> <br /> Updates `@opentelemetry/instrumentation-runtime-node` from 0.32.0 to 0.35.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-runtime-node/CHANGELOG.md">@opentelemetry/instrumentation-runtime-node's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.34.0...instrumentation-runtime-node-v0.35.0">0.35.0</a> (2026-08-31)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3716">#3716</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/015582a5b839b942c7a6a0aa8a60d1665b16663f">015582a</a>)</li> </ul> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.33.0...instrumentation-runtime-node-v0.34.0">0.34.0</a> (2026-07-23)</h2> <h3>⚠ BREAKING CHANGES</h3> <ul> <li><strong>instrumentation-runtime-node:</strong> remove deprecated v8js.memory.heap.limit metric (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3632">#3632</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3629">#3629</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/466d5def474cf251217881322ed4db13fad96b86">466d5de</a>)</li> <li><strong>instrumentation-runtime-node:</strong> remove deprecated v8js.memory.heap.limit metric (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3632">#3632</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/f69829245952b95f5d1827b0a6cee67499f85bc6">f698292</a>)</li> </ul> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.32.0...instrumentation-runtime-node-v0.33.0">0.33.0</a> (2026-07-03)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3593">#3593</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/6dfb532ac16889c2f8656f2d9132a290e68cb570">6dfb532</a>)</li> <li><strong>instrumentation-runtime-node:</strong> add active resource gauge (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3361">#3361</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/f3d38e25cdb7a158a47c24fc344cb4e9c6f24252">f3d38e2</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commits/host-metrics-v0.35.0/packages/instrumentation-runtime-node">compare view</a></li> </ul> </details> <br /> Updates `@sap/cds-mtxs` from 4.0.1 to 4.1.0 Updates `axios` from 1.18.1 to 1.20.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/axios/axios/releases">axios's releases</a>.</em></p> <blockquote> <h2>v1.20.0 — August 19, 2026</h2> <p>This release hardens runtime option handling, adds RFC 9110 status-code aliases, fixes Node.js and XHR reliability issues, and refreshes project tooling and documentation.</p> <h2>⚠️ Breaking Changes & Deprecations</h2> <ul> <li>HTTP Status Naming: Added ContentTooLarge (413) and UnprocessableContent (422), while retaining PayloadTooLarge and UnprocessableEntity as backward-compatible deprecated aliases. (<a href="https://redirect.github.com/axios/axios/issues/11082">#11082</a>)</li> </ul> <h2>🔒 Security Fixes</h2> <ul> <li>Runtime Option Handling: Hardened behavioral configuration reads against shared and foreign prototype pollution and normalized unsafe interceptor replacement objects. This also clarifies Fetch redirect and custom implementation behavior, HTTP/2 DNS and proxy handling, CIDR-based NO_PROXY matching, and malformed data URI rejection; see the PR for documented compatibility effects. (<a href="https://redirect.github.com/axios/axios/issues/11141">#11141</a>)</li> </ul> <h2>🐛 Bug Fixes</h2> <ul> <li>Interceptor Lifecycle: Prevented unbounded handler-array growth by trimming trailing ejected interceptors without changing iteration semantics, and kept interceptor operations safe when the public handlers field is nullish. (<a href="https://redirect.github.com/axios/axios/issues/11087">#11087</a>, <a href="https://redirect.github.com/axios/axios/issues/11118">#11118</a>)</li> <li>Request Error Preservation: Prevented custom Error.prepareStackTrace implementations that return non-string values from replacing the original request failure with an unrelated TypeError. (<a href="https://redirect.github.com/axios/axios/issues/11109">#11109</a>)</li> <li>XHR Reliability: Navigation-canceled requests now reject with ECONNABORTED instead of resolving with status 0, while successful downloads flush their final progress callback during the live loadend dispatch. (<a href="https://redirect.github.com/axios/axios/issues/11094">#11094</a>, <a href="https://redirect.github.com/axios/axios/issues/11121">#11121</a>)</li> <li>Node.js Socket Memory: Removed request-context retention from per-socket error listeners, preventing completed response data from being pinned for the lifetime of pooled keep-alive sockets. (<a href="https://redirect.github.com/axios/axios/issues/11091">#11091</a>)</li> <li>Core Methods and HTTP Errors: Prevented structural method-header buckets from leaking into outgoing headers, standardized invalid DNS lookup and httpVersion failures as AxiosError.ERR_BAD_OPTION_VALUE, and corrected the timeoutErrorMessage merge strategy. (<a href="https://redirect.github.com/axios/axios/issues/11096">#11096</a>)</li> </ul> <h2>🔧 Maintenance & Chores</h2> <ul> <li>Dependencies: Updated fast-uri, postcss, js-yaml, mocha, development-tooling groups, and GitHub Actions dependencies. (<a href="https://redirect.github.com/axios/axios/issues/11092">#11092</a>, <a href="https://redirect.github.com/axios/axios/issues/11098">#11098</a>, <a href="https://redirect.github.com/axios/axios/issues/11099">#11099</a>, <a href="https://redirect.github.com/axios/axios/issues/11106">#11106</a>, <a href="https://redirect.github.com/axios/axios/issues/11107">#11107</a>, <a href="https://redirect.github.com/axios/axios/issues/11122">#11122</a>, <a href="https://redirect.github.com/axios/axios/issues/11123">#11123</a>, <a href="https://redirect.github.com/axios/axios/issues/11126">#11126</a>, <a href="https://redirect.github.com/axios/axios/issues/11127">#11127</a>, <a href="https://redirect.github.com/axios/axios/issues/11133">#11133</a>, <a href="https://redirect.github.com/axios/axios/issues/11140">#11140</a>, <a href="https://redirect.github.com/axios/axios/issues/11143">#11143</a>, <a href="https://redirect.github.com/axios/axios/issues/11144">#11144</a>)</li> <li>Documentation: Applied the v1.19.0 documentation updates, added the missing fs import to the README stream example, introduced localized global search, and repaired the interceptor test link. (<a href="https://redirect.github.com/axios/axios/issues/11101">#11101</a>, <a href="https://redirect.github.com/axios/axios/issues/11113">#11113</a>, <a href="https://redirect.github.com/axios/axios/issues/11097">#11097</a>, <a href="https://redirect.github.com/axios/axios/issues/11119">#11119</a>)</li> <li>Sponsorship: Updated sponsorship links and data and added ScrapingBee as a sponsor. (<a href="https://redirect.github.com/axios/axios/issues/11124">#11124</a>, <a href="https://redirect.github.com/axios/axios/issues/11136">#11136</a>, <a href="https://redirect.github.com/axios/axios/issues/11137">#11137</a>)</li> <li>CI and Release: Switched ESM smoke tests to locked dependencies and synchronized package and runtime version metadata for v1.20.0. (<a href="https://redirect.github.com/axios/axios/issues/11128">#11128</a>, <a href="https://redirect.github.com/axios/axios/issues/11152">#11152</a>)</li> </ul> <h2>🌟 New Contributors</h2> <p>We are thrilled to welcome our new contributors. Thank you for helping improve axios:</p> <ul> <li><a href="https://github.com/yens1"><code>@yens1</code></a> (<a href="https://redirect.github.com/axios/axios/issues/11109">#11109</a>)</li> <li><a href="https://github.com/Sasireddy001"><code>@Sasireddy001</code></a> (<a href="https://redirect.github.com/axios/axios/issues/11113">#11113</a>)</li> <li><a href="https://github.com/ari-token-security"><code>@ari-token-security</code></a> (<a href="https://redirect.github.com/axios/axios/issues/11094">#11094</a>)</li> <li><a href="https://github.com/timothyokooboh"><code>@timothyokooboh</code></a> (<a href="https://redirect.github.com/axios/axios/issues/11097">#11097</a>)</li> <li><a href="https://github.com/gi9439041-png"><code>@gi9439041-png</code></a> (<a href="https://redirect.github.com/axios/axios/issues/11119">#11119</a>)</li> <li><a href="https://github.com/Hashim1999164"><code>@Hashim1999164</code></a> (<a href="https://redirect.github.com/axios/axios/issues/11082">#11082</a>)</li> <li><a href="https://github.com/v-dev-cl"><code>@v-dev-cl</code></a> (<a href="https://redirect.github.com/axios/axios/issues/11091">#11091</a>)</li> <li><a href="https://github.com/r0h1tb"><code>@r0h1tb</code></a> (<a href="https:/…
… 8 updates (#499) Bumps the prod-dependencies group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@opentelemetry/core](https://github.com/open-telemetry/opentelemetry-js) | `2.10.0` | `2.11.0` | | [@opentelemetry/instrumentation](https://github.com/open-telemetry/opentelemetry-js) | `0.221.0` | `0.222.0` | | [@opentelemetry/instrumentation-http](https://github.com/open-telemetry/opentelemetry-js) | `0.221.0` | `0.222.0` | | [@opentelemetry/instrumentation-undici](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/HEAD/packages/instrumentation-undici) | `0.31.0` | `0.32.0` | | [@opentelemetry/resources](https://github.com/open-telemetry/opentelemetry-js) | `2.10.0` | `2.11.0` | | [@opentelemetry/sdk-metrics](https://github.com/open-telemetry/opentelemetry-js) | `2.10.0` | `2.11.0` | | [@opentelemetry/sdk-trace-base](https://github.com/open-telemetry/opentelemetry-js) | `2.10.0` | `2.11.0` | | [@opentelemetry/sdk-trace-node](https://github.com/open-telemetry/opentelemetry-js) | `2.10.0` | `2.11.0` | Updates `@opentelemetry/core` from 2.10.0 to 2.11.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/core's releases</a>.</em></p> <blockquote> <h2>v2.11.0</h2> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md">@opentelemetry/core's changelog</a>.</em></p> <blockquote> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-trace-base): avoid a Webpack self-reference error in CommonJS output <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6981">#6981</a> <a href="https://github.com/sansynx"><code>@sansynx</code></a></li> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/v2.10.0...v2.11.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/instrumentation` from 0.221.0 to 0.222.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/instrumentation's releases</a>.</em></p> <blockquote> <h2>experimental/v0.222.0</h2> <h2>0.222.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>fix(sdk-node)!: fail-fast on Propagator creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6930">#6930</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on MeterProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6954">#6954</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on TracerProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6962">#6962</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on Resource creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6989">#6989</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li> <p>This also breaks some usage of <code>startNodeSDK()</code> for <em>environment-based</em> config, i.e. when <em>not</em> using a config file. For example with <code>OTEL_NODE_RESOURCE_DETECTORS=all</code>, it results in an error message and a no-op SDK. (This does not impact users of <code>new NodeSDK()</code> -- the currently recommended mechanism to start an SDK using this package.)</p> <pre lang="bash"><code>Could not create OpenTelemetry SDK from configuration, SDK will not be setup: unknown ExperimentalResourceDetector name in configuration: "container" </code></pre> </li> </ul> </li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): deprecate <code>SdkLogRecord</code> in favor of <code>ReadWriteLogRecord</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6939">#6939</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(instrumentation-http): redact sensitive query parameters on incoming (server) spans; add <code>redactedQueryParamsServer</code> config option <a href="https://github.com/dyladan"><code>@dyladan</code></a></li> <li>fix(sdk-node): support <code>headers_list</code> when creating OTLP exporters from declarative configuration <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6953">#6953</a> <a href="https://github.com/JacksonWeber"><code>@JacksonWeber</code></a></li> </ul> <h3>:books: Documentation</h3> <ul> <li>docs(sdk-logs): mark logger configuration as experimental <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6996">#6996</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>docs(configuration): document the <code>ConfigModel</code> suffix naming convention for exported types <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6612">#6612</a> <a href="https://github.com/vedantchalke36"><code>@vedantchalke36</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>refactor(sampler-jaeger-remote): remove <code>axios</code> dependency and use <code>fetch</code> to get the sampler configuration from Jaeger API <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6963">#6963</a> <a href="https://github.com/david-luna"><code>@david-luna</code></a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.221.0...experimental/v0.222.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/instrumentation-http` from 0.221.0 to 0.222.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/instrumentation-http's releases</a>.</em></p> <blockquote> <h2>experimental/v0.222.0</h2> <h2>0.222.0</h2> <h3>:boom: Breaking Changes</h3> <ul> <li>fix(sdk-node)!: fail-fast on Propagator creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6930">#6930</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on MeterProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6954">#6954</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on TracerProvider creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6962">#6962</a> <a href="https://github.com/trentm"><code>@trentm</code></a></li> <li>fix(sdk-node)!: fail-fast on Resource creation from config file <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6989">#6989</a> <a href="https://github.com/trentm"><code>@trentm</code></a> <ul> <li> <p>This also breaks some usage of <code>startNodeSDK()</code> for <em>environment-based</em> config, i.e. when <em>not</em> using a config file. For example with <code>OTEL_NODE_RESOURCE_DETECTORS=all</code>, it results in an error message and a no-op SDK. (This does not impact users of <code>new NodeSDK()</code> -- the currently recommended mechanism to start an SDK using this package.)</p> <pre lang="bash"><code>Could not create OpenTelemetry SDK from configuration, SDK will not be setup: unknown ExperimentalResourceDetector name in configuration: "container" </code></pre> </li> </ul> </li> </ul> <h3>:rocket: Features</h3> <ul> <li>feat(sdk-logs): deprecate <code>SdkLogRecord</code> in favor of <code>ReadWriteLogRecord</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6939">#6939</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(instrumentation-http): redact sensitive query parameters on incoming (server) spans; add <code>redactedQueryParamsServer</code> config option <a href="https://github.com/dyladan"><code>@dyladan</code></a></li> <li>fix(sdk-node): support <code>headers_list</code> when creating OTLP exporters from declarative configuration <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6953">#6953</a> <a href="https://github.com/JacksonWeber"><code>@JacksonWeber</code></a></li> </ul> <h3>:books: Documentation</h3> <ul> <li>docs(sdk-logs): mark logger configuration as experimental <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6996">#6996</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>docs(configuration): document the <code>ConfigModel</code> suffix naming convention for exported types <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6612">#6612</a> <a href="https://github.com/vedantchalke36"><code>@vedantchalke36</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>refactor(sampler-jaeger-remote): remove <code>axios</code> dependency and use <code>fetch</code> to get the sampler configuration from Jaeger API <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6963">#6963</a> <a href="https://github.com/david-luna"><code>@david-luna</code></a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.221.0...experimental/v0.222.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/instrumentation-undici` from 0.31.0 to 0.32.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/releases">@opentelemetry/instrumentation-undici's releases</a>.</em></p> <blockquote> <h2>instrumentation-undici: v0.32.0</h2> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-undici-v0.31.0...instrumentation-undici-v0.32.0">0.32.0</a> (2026-08-31)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3716">#3716</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/015582a5b839b942c7a6a0aa8a60d1665b16663f">015582a</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>instrumentation-undici:</strong> use low-cardinality error.type (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3659">#3659</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/3756dfa6b084f90ce81cf6be45d9deb8c72a9db6">3756dfa</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-undici/CHANGELOG.md">@opentelemetry/instrumentation-undici's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-undici-v0.31.0...instrumentation-undici-v0.32.0">0.32.0</a> (2026-08-31)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update deps matching '@opentelemetry/*' (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3716">#3716</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/015582a5b839b942c7a6a0aa8a60d1665b16663f">015582a</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>instrumentation-undici:</strong> use low-cardinality error.type (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/issues/3659">#3659</a>) (<a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commit/3756dfa6b084f90ce81cf6be45d9deb8c72a9db6">3756dfa</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/open-telemetry/opentelemetry-js-contrib/commits/host-metrics-v0.32.0/packages/instrumentation-undici">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/resources` from 2.10.0 to 2.11.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/resources's releases</a>.</em></p> <blockquote> <h2>v2.11.0</h2> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md">@opentelemetry/resources's changelog</a>.</em></p> <blockquote> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-trace-base): avoid a Webpack self-reference error in CommonJS output <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6981">#6981</a> <a href="https://github.com/sansynx"><code>@sansynx</code></a></li> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/v2.10.0...v2.11.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/sdk-metrics` from 2.10.0 to 2.11.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/sdk-metrics's releases</a>.</em></p> <blockquote> <h2>v2.11.0</h2> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md">@opentelemetry/sdk-metrics's changelog</a>.</em></p> <blockquote> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-trace-base): avoid a Webpack self-reference error in CommonJS output <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6981">#6981</a> <a href="https://github.com/sansynx"><code>@sansynx</code></a></li> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/v2.10.0...v2.11.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/sdk-trace-base` from 2.10.0 to 2.11.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/sdk-trace-base's releases</a>.</em></p> <blockquote> <h2>v2.11.0</h2> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md">@opentelemetry/sdk-trace-base's changelog</a>.</em></p> <blockquote> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-trace-base): avoid a Webpack self-reference error in CommonJS output <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6981">#6981</a> <a href="https://github.com/sansynx"><code>@sansynx</code></a></li> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/v2.10.0...v2.11.0">compare view</a></li> </ul> </details> <br /> Updates `@opentelemetry/sdk-trace-node` from 2.10.0 to 2.11.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/releases">@opentelemetry/sdk-trace-node's releases</a>.</em></p> <blockquote> <h2>v2.11.0</h2> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md">@opentelemetry/sdk-trace-node's changelog</a>.</em></p> <blockquote> <h2>2.11.0</h2> <h3>:rocket: Features</h3> <ul> <li>feat(context-async-hooks): implement <code>attach()</code> on <code>AsyncLocalStorageContextManager</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6845">#6845</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a> <ul> <li>On Node.js 25.9+, delegates to <code>AsyncLocalStorage.withScope()</code> returning a native <code>RunScope</code>. On older Node.js, falls back to <code>enterWith()</code> with a manual disposable wrapper.</li> </ul> </li> <li>feat(sdk-trace): allow configuring the force flush timeout per call <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6929">#6929</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> </ul> <h3>:bug: Bug Fixes</h3> <ul> <li>fix(sdk-trace-base): avoid a Webpack self-reference error in CommonJS output <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6981">#6981</a> <a href="https://github.com/sansynx"><code>@sansynx</code></a></li> <li>fix(sdk-metrics): ignore <code>Infinity</code> in exponential histograms <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/7015">#7015</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> </ul> <h3>:house: Internal</h3> <ul> <li>perf(sdk-metrics): reuse a single DataView for exponential histogram bit reads <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6998">#6998</a> <a href="https://github.com/mwear"><code>@mwear</code></a></li> <li>chore(ci): run documentation tests on a weekly schedule <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6920">#6920</a> <a href="https://github.com/LarryHu0217"><code>@LarryHu0217</code></a></li> <li>feat(ci): support pre-releases and major version bumps in the release workflow <a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6768">#6768</a> <a href="https://github.com/pichlermarc"><code>@pichlermarc</code></a></li> <li>chore(resources): Ensure that multiple uses of serviceInstanceIdDetector.detect() return the <em>same</em> value for <code>service.instance.id</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/0b72a81636fa476e8f1f1afd2ae0c90a1362194c"><code>0b72a81</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7044">#7044</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/a9c5338a9f485f1433df9308f24bd7397a4a0321"><code>a9c5338</code></a> ci: roll prerelease changelog into one final release changelog (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7045">#7045</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/f41805e769ba10fb6dae72a4b7a5a3dc67cca82e"><code>f41805e</code></a> chore: prepare next release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7042">#7042</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/b85eb28343ff6234e2bb4d46b7b4a3d360e5ea2f"><code>b85eb28</code></a> chore(instrumentation-http): fix lint errors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7039">#7039</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/3f9253009be2ae48419432e79a597ead7be8be6a"><code>3f92530</code></a> ci: support pre-releases and major version bumps in release workflow (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7035">#7035</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/82a58316a63b6fde62afd268e145b82222d328cf"><code>82a5831</code></a> docs(otlp-exporter-base): document HTTP exporter options (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6735">#6735</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/e086dec7f9304107ef6d50b5877be88895c06aa7"><code>e086dec</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/59dac70d00d46fa56b2b921cf721fd922730f23d"><code>59dac70</code></a> chore(deps): update jamesives/github-pages-deploy-action action to v4.9.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7">#7</a>...</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/d0ce7532b058631ec9eec111c04fefe7fd873e1f"><code>d0ce753</code></a> chore: add <a href="https://github.com/maryliag"><code>@maryliag</code></a> to maintainers (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7024">#7024</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-js/commit/03469a129f97265c8eec93d566e9e00d4f741db3"><code>03469a1</code></a> chore(deps): update open-telemetry/shared-workflows action to v0.10.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/7032">#7032</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-js/compare/v2.10.0...v2.11.0">compare view</a></li> </ul> </details> <br /> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sebastian Van Syckel <sebastian.van.syckel@sap.com>
# Add Tenant and Correlation IDs to Log Attributes ### New Features ✨ Enhances log records with tenant and correlation context to improve observability and align logging metadata with spans and metrics. ### Changes * `lib/logging/index.js`: Adds `sap.tenancy.tenant_id` and `sap.cds.correlation_id` attributes to structured log records when available from `cds.context`, enabling easier tracing and tenant-aware log analysis. - [ ] 🔄 Regenerate and Update Summary <details> <summary>PR Bot Information</summary> **Version:** `1.31.30` - File Content Strategy: Full file content - Event Trigger: `pull_request.opened` - LLM: `gpt-5.5` - Summary Prompt: [Default Prompt](https://github.tools.sap/Code-Change-Intelligence/pr-bot/blob/main/src/services/llm/prompts/summary_instructions_prompt.md) - Output Template: [Default Template](https://github.tools.sap/Code-Change-Intelligence/pr-bot/blob/main/src/services/llm/prompts/summary_default_output_template.md) - Correlation ID: `495f5870-ae2e-11f1-951c-19ee13dea867` </details> --------- Co-authored-by: sjvans <30337871+sjvans@users.noreply.github.com> Co-authored-by: Sebastian Van Syckel <sebastian.van.syckel@sap.com>
# Restructure `lib/utils`, decouple mTLS cert sourcing, simplify ZTI gating Internal refactor of the CaaS/mTLS machinery that landed in v2.1.0. No behavioral change to the supported configurations — pure reorganization plus a simplification of how ZTI is enabled. Base: `develop`. ### Modularize `lib/utils` The 321-line monolithic `lib/utils.js` is split into cohesive, single-responsibility modules, each imported directly (no barrel): * `utils/common.js` — `_require`, `hasDependency`, `getDiagLogLevel` * `utils/resource.js` — OTel `Resource` / Dynatrace metadata * `utils/time.js` — timestamp helpers * `utils/credentials.js` — binding resolution + creds augmentation (`getCredsForDTAsUPS`, `getCredsForCLSAsUPS`, `augmentCLCreds`, `augmentCaaSCreds`) * `utils/mtls.js` — generic mTLS transport + static x509 cert provisioning (`certsAvailable`, `setupStaticCerts`, rotating agent) * `utils/caas.js` — CaaS exporter assembly + boot-race buffering (`createCaaSExporter`, `wrapExporterWithBuffer`) ### Decouple mTLS cert sourcing Clear layering: **cert source** (`zti` async SVID / `mtls` static x509) → **generic mTLS transport** (`mtls`) → **exporter wiring** (`caas`) → **signal modules** (tracing/metrics/logging). * `certsAvailable()` is now a pure predicate over `cds.env`. * Cert provisioning is an explicit one-shot startup step (`_provisionCerts` in `lib/index.js`), gated to the `to-caas` kind, running before exporters are built. ### Simplify ZTI gating * Dropped the `TELEMETRY_USE_ZTI` opt-out and `isZTIEnabled()` — a bound `zero-trust-identity` service is now the **sole** trigger for ZTI as the cert source. * Renamed the `_useZTI` handoff flag to `_asyncCerts` to name what it signals: ZTI writes SVID files asynchronously and they may arrive after startup, so a missing cert is transient (buffer until the watcher delivers) rather than a misconfiguration (fail fast). Static x509 is present-now-or-never, so the flag stays false. ### Misc * Trimmed verbose comments in `lib/logging/index.js`. * Tests reorganized to match the new module boundaries (`test/buffer.test.js`, `test/caas.test.js`); suite green (97 passed, 8 HANA skips).
… OneAgent path (#504) ## What Prevents a startup crash on the Dynatrace OneAgent path and clarifies how to get traces into Dynatrace. When Dynatrace OneAgent is active (`DT_NODE_PRELOAD_OPTIONS` set), the kind is `*-to-dynatrace`, and `@opentelemetry/exporter-trace-otlp-proto` is **not** a dependency, the 2.x tracing factory built a `NodeTracerProvider` whose only span processor was `undefined` (no exporter is configured on this path, so `processor` stayed unset). The provider constructs fine, but `MultiSpanProcessor.onStart` dereferences the undefined processor on the **first span** → the app crashes on startup (CF exit 137, crash loop). ## Fix On the OneAgent path the factory now sets up nothing and returns — no exporter, no processor, no provider, nothing to crash on. It does **not** register or clobber a global tracer provider. `@cap-js/telemetry` does not export traces on this path, and it logs a warning at startup pointing to the supported route: > **Until further notice, export traces to Dynatrace via the OTLP exporter.** Add `@opentelemetry/exporter-trace-otlp-proto` as a dependency (which flips `via_one_agent` off and takes the normal OTLP export path). See the [Dynatrace OneAgent](https://github.com/cap-js/telemetry/blob/develop/README.md#dynatrace-oneagent) section of the README. The earlier assumption — that OneAgent's already-registered global provider would capture `@cap-js/telemetry`'s spans automatically — did not hold in practice (OneAgent registers no in-process OTel provider on the tested runtime), so the code comment, README, and CHANGELOG no longer claim it. ## Changes - `lib/tracing/index.js`: OneAgent path returns early without building an exporter/processor/provider; warns. - `test/tracing-one-agent.test.js`: regression test — an undefined span processor crashes on the first span; the OneAgent path sets up nothing, returns `undefined`, leaves the global delegate untouched, and does not crash on span creation. - `README.md`: "Dynatrace OneAgent" section rewritten — OTLP export is required until further notice; dropped the "OneAgent transports the spans automatically" claim and the stale sampler/propagator caveats. - `CHANGELOG.md`: crash-fix entry under `### Fixed`. Closes #502
sjvans
commented
Sep 17, 2026
| This project adheres to [Semantic Versioning](http://semver.org/). | ||
| The format is based on [Keep a Changelog](http://keepachangelog.com/). | ||
|
|
||
| ## Version 2.1.0 - tbd |
Contributor
Author
There was a problem hiding this comment.
Suggested change
| ## Version 2.1.0 - tbd | |
| ## Version 2.1.0 - 2026-09-XX |
) Fixes #509. Follow-up to #502 / #504. ## What this changes On the OneAgent path — Dynatrace OneAgent present (`DT_NODE_PRELOAD_OPTIONS` set), kind `*-to-dynatrace`, and no `@opentelemetry/exporter-trace-otlp-proto` installed — the tracing factory now **registers a recording `NodeTracerProvider` with an empty span-processor list** instead of warning and bailing out. The provider records spans but exports nothing itself, so the CDS spans actually come into existence for OneAgent's in-process OpenTelemetry capture to pick up — without us exporting (and thus duplicating) them. The factory's branching was refactored around two orthogonal axes — `via_one_agent` (OneAgent present, no exporter) and `resource` (truthy = standalone, falsy = CALM under `@sap/xotel-agent-ext-js`): | | standalone (`resource`) | CALM (no `resource`) | | --- | --- | --- | | **not OneAgent** | register provider with the configured exporter's processor | delegate the processor to `@sap/xotel-agent-ext-js` | | **OneAgent** | register recording provider, no processor (in-process capture) | rejected — `throw` | The **CALM + OneAgent** combination is now rejected fail-fast: two agents owning tracing at once is a contradictory, unverified setup, so the factory throws rather than silently doing nothing. This is the plugin-side prerequisite for OneAgent in-process capture. It is correct and necessary — but, as the analysis below shows, it is **not sufficient on its own** with current OneAgent versions. ## Analysis / findings I live-verified this against a OneAgent-injected app on SAP BTP CF (classic-managed Dynatrace tenant, OneAgent 1.339). Findings: **OneAgent's in-process OTel capture is version-sensitive to the OpenTelemetry JS SDK layout.** OneAgent instruments OTel-JS by wrapping `getTracer` on the class defined in `@opentelemetry/sdk-trace-base`'s `BasicTracerProvider.js`, then applying its span transformer to the returned tracer. (Its other, deeper `Tracer`/`Span` patch is version-gated to SDK `^1.0.0` and is skipped on 2.x.) **OpenTelemetry JS SDK `sdk-trace-base` 2.9.0 restructured the packages:** `getTracer` moved out of `sdk-trace-base` into a new package `@opentelemetry/sdk-trace` (`TracerProvider.js`), and `BasicTracerProvider.js` became a thin re-export `BasicTracerProvider-shim.js`. On ≥2.9 there is no `BasicTracerProvider.js` for OneAgent to match, and it has no rule for the new `@opentelemetry/sdk-trace` package — so the `getTracer` wrap never attaches and the CDS `INTERNAL` spans are never captured. Exact, empirically confirmed boundary: | `@opentelemetry/sdk-trace-base` | Provider layout | OneAgent 1.339 in-process capture | | --- | --- | --- | | ≤ 2.8.0 | real `BasicTracerProvider.js` with `getTracer` | ✅ captures the full CDS span tree | | ≥ 2.9.0 | `BasicTracerProvider-shim.js` + split into `@opentelemetry/sdk-trace` | ❌ only the HTTP entry point (OneAgent's native sensor) | **Clean A/B on the same app + same OneAgent:** - With this fix and the plugin's declared `@opentelemetry/sdk-trace-* ^2.8` floating to **2.11.0** (post-split): only the HTTP PurePath appears — no CDS spans. - Pinning the trace SDK to **2.8.0** (last pre-split): the full CDS tree nests under the HTTP request — `CatalogService - tx` → `CatalogService - READ …` → `db - READ …` → `@cap-js/sqlite - prepare/stmt.all SELECT …` (scope `@cap-js/telemetry`, `SpanKind.INTERNAL`). The HTTP entry point is captured in both cases because that is OneAgent's own HTTP sensor, not OTel. **Conclusion.** This is an **OneAgent-side gap**: OneAgent has not yet been updated for the OTel-JS SDK 2.9 package restructure. The full fix is on the Dynatrace side (OneAgent needs to instrument the current layout — `@opentelemetry/sdk-trace`'s `TracerProvider.js` / `Tracer.js` / `Span.js`, or relax the deep-patch version gate to `^2.0.0`). A support ticket with Dynatrace references this PR. Dependencies are kept at `^2.8` (floating to 2.x latest) — pinning the plugin to the last pre-split patch to work around a OneAgent bug would freeze the OTel SDK and is not a maintainable trade-off. Once OneAgent adds support for the current layout, in-process capture works with no further change here. ## Docs - **README** (Dynatrace OneAgent section): documents in-process capture as the supported path — no exporter needed when OneAgent is present, or install the OTLP exporter to have the plugin export the spans itself (which takes precedence). - **CHANGELOG**: unreleased 2.1.0 entry describes the recording-provider behavior. The temporary pin that works around the current OneAgent gap is posted as a workaround comment on #509 rather than baked into the README, so it can simply be dropped once OneAgent catches up. ## Tests `test/tracing-one-agent.test.js` asserts, without a live tenant: - the illustrative crash mode — a provider whose only processor is `undefined` throws on the first span (why the OneAgent path uses `[]`, not `[processor]`); - `@opentelemetry/exporter-trace-otlp-proto` is not a production dependency (precondition for `via_one_agent`); - standalone + OneAgent — the factory returns a real `NodeTracerProvider` whose spans are **recording** (not `NonRecordingSpan`) and whose creation/end never crashes; - CALM + OneAgent — rejected as an unsupported combination (throws).
Adds the missing CHANGELOG entry for #506, which shipped to \`develop\` without one. #506 adds the \`sap.tenancy.tenant_id\` attribute to exported log records (from \`cds.context\`), aligning log metadata with traces and metrics. Note: #506's title/description also mentions \`sap.cds.correlation_id\`, but the merged code only adds \`sap.tenancy.tenant_id\` — the entry reflects what actually shipped.
…516) ## What - **New section: Running with SAP Cloud ALM (beta).** Documents that when `@sap/xotel-agent-ext-js` is present, the plugin detects it and contributes its CDS spans to the agent's tracing pipeline (delegate on the shared span processor) instead of standing up its own tracer provider — the OTel-2.0-compatible coexistence tracked in #99. Marked beta; refers to SAP Cloud ALM's own docs for agent onboarding; notes the CALM + Dynatrace OneAgent combination is unsupported. - **Carve out `telemetry-to-caas`.** The heavy CaaS deployment recipe (collector instance creation, ZTI sidecar `mta.yaml`, certificate-identity workaround, manual mTLS) is removed from the public README and moved to the internal golden-path docs, where the audience and internal links belong. The kind's TOC entry is removed too. ## Why - CALM coexistence is now demand-driven (#99) and works on OTel 2.0 via the delegate path; documenting it (beta) gives users a supported story. - The CaaS recipe is deployment/onboarding content for an internal offering — it fits golden-path, not the plugin's public API reference. Net: README is +11 / −101 lines. ## Requirements CALM coexistence requires `@sap/xotel-agent-ext-js` 2.0.4 or later. Closes #99
Contributor
|
Hi @sjvans: when do you plan to release this version ? |
hm23
reviewed
Sep 25, 2026
# Polish CaaS Exporter Buffering and Tooling Cleanup ### Bug Fix 🐛 Refines CaaS exporter buffering so telemetry batches are buffered only while certificates are unavailable, flushed once certificates arrive, and then exported directly for all future calls. Also includes small documentation and tooling cleanup. ### Changes * `lib/utils/caas.js`: Simplified buffering logic by removing the separate readiness state and relying on certificate availability. Buffered batches are flushed once certificates are present, the original exporter is restored, and pre-certificate batches are acknowledged while buffered. * `README.md`: Corrected the documented number of predefined telemetry kinds from six to five. * `package.json`: Updated lint and format scripts to call local binaries directly instead of using `npx`. * `.oxfmtrc.jsonc`: Reduced formatter ignore patterns so `CHANGELOG.md` and `jest.config.js` are no longer excluded. * `eslint.config.mjs`: Removed the custom Vitest `vi` global override and now exports the recommended CDS ESLint config directly. * `lib/tracing/locate.js`: Clarified the comment explaining why locate failures stay quiet during tests. * `test/tracing.test.js`: Removed an outdated Jest-related revisit comment. - [ ] 🔄 Regenerate and Update Summary <details> <summary>PR Bot Information</summary> **Version:** `1.31.51` - Correlation ID: `c1d5d860-b8d8-11f1-994e-9f11a17ac661` - Output Template: [Default Template](https://github.tools.sap/Code-Change-Intelligence/pr-bot/blob/main/src/services/llm/prompts/summary_default_output_template.md) - File Content Strategy: Full file content - LLM: `gpt-5.5` - Summary Prompt: [Default Prompt](https://github.tools.sap/Code-Change-Intelligence/pr-bot/blob/main/src/services/llm/prompts/summary_instructions_prompt.md) - Event Trigger: `pull_request.edited` </details>
This branch had an error being deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release:
v2.1.0Standing release PR — accumulates everything merged into
developfor the next minor. Do not squash-merge; review and merge with a team member to satisfy themainreview requirement. Description kept current as PRs land ondevelop.Changes so far
package.json/CHANGELOG.md: version →2.1.0;## Version 2.1.0changelog section.develop(ci: run on pull requests to develop #469); dependabot targetsdevelop(ci: target develop for dependabot updates #470).<service> - txspans under thecds.spawn - run taskroot (feat: trace queue worker transactions + structured span test infrastructure #465), plus structured in-memory span test infrastructure (MyInMemorySpanExporter) replacing console-log-regex assertions.@sap-cloud-sdk/http-clientexports patched viaObject.defineProperty; added to devDeps so the path runs in CI; cloud-sdk + native-fetch tracing tests (fix: trace Cloud SDK outbound requests (getter-only exports) #451).--forceExitvia forked-pool teardown (chore: migrate test runner from jest to vitest #474).oxfmtcode formatter +format/format:checkscripts + CI check (chore: adopt oxfmt for code formatting #476).MyInMemoryMetricReader(DELTA temporality) instead ofconsole.dirspying; added aConsoleMetricExporterunit test; state-basedexpectEventuallypolling replaces fixed sleeps (test: capture outbox+console metrics via in-memory reader & unit-test ConsoleMetricExporter #479).0.221, with@opentelemetry/sdk-logspinned to0.219viaoverrides(0.221 leaks memory via the log-format re-entrancy — see Memory leak: sdk-logs 0.221 re-enters cds.log.format interception → logging.test.js OOM #482) (chore(deps-dev): bump the OTLP dev-dependency group to 0.221 (pin sdk-logs, #482) #483).preparespan names, and*_storage_time_in_secondsgauges skewed by the machine's UTC offset (test: run full suite on HANA + fix two HANA span/metric bugs (#477 §2, §5) #481).@opentelemetry/sdk-logs0.221's export path — log processors are constructed with the arg shape the installed sdk-logs version expects (version-adaptive), plus a re-entrancy guard; the temporary sdk-logs 0.219 pin (chore(deps-dev): bump the OTLP dev-dependency group to 0.221 (pin sdk-logs, #482) #483) is removed (fix(logging): guard cds.log.format interception against re-entrancy; unpin sdk-logs (#482) #489, closes Memory leak: sdk-logs 0.221 re-enters cds.log.format interception → logging.test.js OOM #482).console.dirspan-scraping in tracing tests — remote/span-name tests now read the in-memory span exporter; dropped the unusedtracing-attributesprofile (test: convert remote/span-name tracing tests to in-memory span exporter; drop tracing-attributes profile (#478) #490, Replace console spying in tests with in-memory exporters #478 group 1).asExternalClient,clearOutbox,flushSpans,eventually,makeExpectEventually,isOutboxScanTrace,meaningful) intotest/utils.js(test: centralize duplicated test helpers into test-utils (#488) #492, Centralize duplicated queue/test helpers (clearOutbox, flushSpans, eventually/expectEventually, meaningful) #488)..cdsrc.jsonprofiles instead ofprocess.env.cds_*string-JSON — removes the load-order fragility behind test: run full suite on HANA + fix two HANA span/metric bugs (#477 §2, §5) #481'sdelete cds.envhack (test: configure via .cdsrc.json profiles instead of process.env.cds_* (#486) #493, Tests configure CDS via process.env.cds_requires_* string-JSON instead of profiles/config #486).TESTING.md(authoritative test doc: sqlite-vs-HANA isolation model, config profiles + load-order gotcha, in-memory exporters,test/utils.jshelpers, HTTP instrumentation, sanctioned skips) and trimmed the duplicated explanatory comments across the test files to one-line pointers (docs: add TESTING.md; trim duplicated test comments to pointers (#487) #494, Add TESTING.md documenting test setup + caveats; reduce scattered comment clutter #487).@cap-js/cds-test, the four OTLP exporters, both OTel instrumentation packages,@sap/cds-mtxs,axios,eslint(chore(deps-dev): bump the dev-dependencies group across 1 directory with 10 updates #485).cds.requires.telemetry.tracing.processor = { kind, config? }(BatchSpanProcessordefault,SimpleSpanProcessorin[development]), replacing the hard-codedNODE_ENVswitch; unknown kinds throw, mirroring the sampler/propagator validation (feat: configurable span processor via telemetry.tracing.processor #498, closes Provide an option to choose between Batch and SimpleSpanProcessor #411).@sap/cds >= 10.1(thecds.spawnfix) instead of unconditional — the 4 suites (tracing-scheduled,tracing-outboxed-batch,tracing-messaging-inboxed,tracing-messaging-persistent-outbox) run the full worker-span path on sqlite when cds ≥ 10.1, skip on older cds / the cds-9 CI leg, and HANA always runs (test: gate sqlite queue-worker tracing skips on @sap/cds >= 10.1 (cds.spawn fix) #467, Eliminate all test skips and CI test-subset exclusions (sqlite + HANA) #477 §1).telemetry-to-caaskind for SAP CaaS (Collector-as-a-Service) — OTLP-over-mTLS export with client certs sourced either from azero-trust-identity(ZTI) binding (SVID files, hot-rotated via a filesystem watcher) or from static x509 credentials; exports are buffered until certs become available so nothing is dropped during startup (Add telemetry-to-caas kind for CaaS (Collector as a Service) support #436).CODEOWNERStodevelop(chore: add CODEOWNERS to develop #497).lib/utilssplit into focused modules (resource,credentials,caas,common,mtls,time) and mTLS cert sourcing decoupled (refactor: modularize lib/utils and decouple mTLS cert sourcing #508).DT_NODE_PRELOAD_OPTIONSset, kind*-to-dynatrace, no@opentelemetry/exporter-trace-otlp-protodependency) — the factory no longer builds a tracer provider around an undefined span processor (which crashed on the first span inMultiSpanProcessor.onStart); on that path it sets up no exporter and warns. Until further notice, traces reach Dynatrace via the OTLP exporter, not in-process OneAgent capture (fix(tracing): don't build a span processor without an exporter on the OneAgent path #504, closes Cannot read properties of undefined (reading 'onStart') #502; re-enablement tracked in Re-enable Dynatrace OneAgent in-process trace capture (without requiring the OTLP exporter) #509).via_one_agent× standalone/CALM) and the unverified CALM+OneAgent combination is now rejected fail-fast. Supersedes fix(tracing): don't build a span processor without an exporter on the OneAgent path #504's interim "OTLP exporter required" framing. A remaining OneAgent-side gap — it does not yet instrument the OpenTelemetry-JS ≥2.9 SDK layout — is documented as a temporary-pin workaround on Re-enable Dynatrace OneAgent in-process trace capture (without requiring the OTLP exporter) #509 and pushed to Dynatrace via a support ticket (feat(tracing): support Dynatrace OneAgent in-process trace capture #512, closes Re-enable Dynatrace OneAgent in-process trace capture (without requiring the OTLP exporter) #509).@sap/xotel-agent-ext-js2.0.4+ is present the plugin detects the CALM agent and contributes its CDS spans to the agent's pipeline as a delegate on the shared OTel SDK (no second SDK, no duplicate setup); thetelemetry-to-caasdeployment recipe was carved out of the public README into the internal golden-path docs (docs: add SAP Cloud ALM (beta) section, carve out telemetry-to-caas #516, closes Can this project be used to provide data to SAP Cloud ALM? #99).Follow-ups tracked (not blocking this release)
@sap/cds >= 10.1rather than skipped outright); §3 (7 unimplemented tracing stubs) actionable but out of scope for this release.compiled of: