Skip to content

Upgrade v0.150.0#43

Merged
JaredTan95 merged 1584 commits into
insight-mainfrom
upgrade-v0.150.0
Apr 14, 2026
Merged

Upgrade v0.150.0#43
JaredTan95 merged 1584 commits into
insight-mainfrom
upgrade-v0.150.0

Conversation

@Frapschen

Copy link
Copy Markdown

Description

Link to tracking issue

Fixes

Testing

Documentation

renovate Bot and others added 30 commits March 20, 2026 08:48
…d/common to v1.3.61 (open-telemetry#47071)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common](https://github.com/tencentcloud/tencentcloud-sdk-go)
| `v1.3.54` → `v1.3.61` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2ftencentcloud%2ftencentcloud-sdk-go%2ftencentcloud%2fcommon/v1.3.61?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2ftencentcloud%2ftencentcloud-sdk-go%2ftencentcloud%2fcommon/v1.3.54/v1.3.61?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](..open-telemetry/issues/20907) for more information.

---

### Release Notes

<details>
<summary>tencentcloud/tencentcloud-sdk-go
(github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common)</summary>

###
[`v1.3.61`](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.60...v1.3.61)

[Compare
Source](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.60...v1.3.61)

###
[`v1.3.60`](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.59...v1.3.60)

[Compare
Source](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.59...v1.3.60)

###
[`v1.3.59`](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.58...v1.3.59)

[Compare
Source](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.58...v1.3.59)

###
[`v1.3.58`](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.57...v1.3.58)

[Compare
Source](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.57...v1.3.58)

###
[`v1.3.57`](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.56...v1.3.57)

[Compare
Source](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.56...v1.3.57)

###
[`v1.3.56`](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.55...v1.3.56)

[Compare
Source](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.55...v1.3.56)

###
[`v1.3.55`](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.54...v1.3.55)

[Compare
Source](https://github.com/tencentcloud/tencentcloud-sdk-go/compare/v1.3.54...v1.3.55)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGVib3QiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Yang Song <songy23@users.noreply.github.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [github.com/SAP/go-hdb](https://github.com/SAP/go-hdb) |
`v1.15.2` → `v1.16.2` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fSAP%2fgo-hdb/v1.16.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fSAP%2fgo-hdb/v1.15.2/v1.16.2?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](..open-telemetry/issues/20907) for more information.

---

### Release Notes

<details>
<summary>SAP/go-hdb (github.com/SAP/go-hdb)</summary>

###
[`v1.16.2`](https://github.com/SAP/go-hdb/blob/HEAD/RELEASENOTES.md#v1162)

[Compare
Source](https://github.com/SAP/go-hdb/compare/v1.16.1...v1.16.2)

- deleted test certificates
- cleanups

###
[`v1.16.1`](https://github.com/SAP/go-hdb/blob/HEAD/RELEASENOTES.md#v1161)

[Compare
Source](https://github.com/SAP/go-hdb/compare/v1.16.0...v1.16.1)

- fixed typo

###
[`v1.16.0`](https://github.com/SAP/go-hdb/blob/HEAD/RELEASENOTES.md#v1160)

[Compare
Source](https://github.com/SAP/go-hdb/compare/v1.15.4...v1.16.0)

##### Minor revisions

##### v1.16.2

- deleted test certificates
- cleanups

##### v1.16.1

- fixed typo

##### Changes

- Added support of LDAP authentication
([#&open-telemetry#8203;159](https://github.com/SAP/go-hdb/pull/159))

###
[`v1.15.4`](https://github.com/SAP/go-hdb/blob/HEAD/RELEASENOTES.md#v1154)

[Compare
Source](https://github.com/SAP/go-hdb/compare/v1.15.3...v1.15.4)

- bumped github actions

###
[`v1.15.3`](https://github.com/SAP/go-hdb/blob/HEAD/RELEASENOTES.md#v1153)

[Compare
Source](https://github.com/SAP/go-hdb/compare/v1.15.2...v1.15.3)

- updated dependencies
- added docstore enabled check to test

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGVib3QiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Yang Song <songy23@users.noreply.github.com>
…telemetry#47079)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[gitlab.com/gitlab-org/api/client-go/v2](https://gitlab.com/gitlab-org/api/client-go)
| `v2.5.0` → `v2.7.0` |
![age](https://developer.mend.io/api/mc/badges/age/go/gitlab.com%2fgitlab-org%2fapi%2fclient-go%2fv2/v2.7.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/gitlab.com%2fgitlab-org%2fapi%2fclient-go%2fv2/v2.5.0/v2.7.0?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](..open-telemetry/issues/20907) for more information.

---

### Release Notes

<details>
<summary>gitlab-org/api/client-go
(gitlab.com/gitlab-org/api/client-go/v2)</summary>

###
[`v2.7.0`](https://gitlab.com/gitlab-org/api/client-go/blob/HEAD/CHANGELOG.md#170-2025-12-06)

[Compare
Source](https://gitlab.com/gitlab-org/api/client-go/compare/v2.6.0...v2.7.0)

##### Features

- **users:** Add support for a user to see only one file diff per page
([e2a9e09](https://gitlab.com/gitlab-org/api/client-go/commit/e2a9e09e79e7949e0b19dcfc97e3b7b533541856))

#### 1.6.0

##### 🚀 Features

- feat: add admin compliance policy settings API
([!2610](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2610))
by [Hannes Lange](https://gitlab.com/hlange4)

##### 🔄 Other Changes

- doc: fix typo
([!2603](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2603))
by [Guilhem Bonnefille](https://gitlab.com/gbonnefille)
- chore(deps): update golangci/golangci-lint docker tag to v2.7.1
([!2611](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2611))
by [GitLab Dependency
Bot](https://gitlab.com/gitlab-dependency-update-bot)
- chore(deps): update docker docker tag to v29.1.2
([!2609](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2609))
by [GitLab Dependency
Bot](https://gitlab.com/gitlab-dependency-update-bot)
- chore(deps): update golangci/golangci-lint docker tag to v2.7.0
([!2608](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2608))
by [GitLab Dependency
Bot](https://gitlab.com/gitlab-dependency-update-bot)

###
[`v2.6.0`](https://gitlab.com/gitlab-org/api/client-go/blob/HEAD/CHANGELOG.md#01590-2025-11-04)

[Compare
Source](https://gitlab.com/gitlab-org/api/client-go/compare/v2.5.0...v2.6.0)

##### Features

- **integrations:** add group integration API endpoints for Jira
([09e18ee](https://gitlab.com/gitlab-org/api/client-go/commit/09e18ee598bb7805ac8221f6a05426b1785f9011))

#### 0.158.0

##### 🚀 Features

- Add support to send variables for GraphQL queries
([!2562](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2562))
by [rafasf](https://gitlab.com/rafasf)

##### 🔄 Other Changes

- chore(deps): update module cel.dev/expr to v0.25.0
([!2560](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2560))
by [GitLab Dependency
Bot](https://gitlab.com/gitlab-dependency-update-bot)
- chore(no-release): standardize GitLab name capitalization
([!2551](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2551))
by [Zubeen](https://gitlab.com/syedzubeen)
- chore(deps): update golangci/golangci-lint docker tag to v2.6.0
([!2558](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2558))
by [GitLab Dependency
Bot](https://gitlab.com/gitlab-dependency-update-bot)
- refactor: moved comments to interface 2
([!2557](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2557))
by [Zubeen](https://gitlab.com/syedzubeen)
- refactor: moved comments to interface
([!2556](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2556))
by [Zubeen](https://gitlab.com/syedzubeen)
- refactor(test): avoid panic in tests with goroutines
([!2553](https://gitlab.com/gitlab-org/api/client-go/-/merge_requests/2553))
by [Oleksandr Redko](https://gitlab.com/alexandear)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGVib3QiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Yang Song <songy23@users.noreply.github.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) | `v1.46.1` →
`v1.47.0` |
![age](https://developer.mend.io/api/mc/badges/age/go/modernc.org%2fsqlite/v1.47.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/modernc.org%2fsqlite/v1.46.1/v1.47.0?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](..open-telemetry/issues/20907) for more information.

---

### Release Notes

<details>
<summary>cznic/sqlite (modernc.org/sqlite)</summary>

###
[`v1.47.0`](https://gitlab.com/cznic/sqlite/compare/v1.46.2...v1.47.0)

[Compare
Source](https://gitlab.com/cznic/sqlite/compare/v1.46.2...v1.47.0)

###
[`v1.46.2`](https://gitlab.com/cznic/sqlite/compare/v1.46.1...v1.46.2)

[Compare
Source](https://gitlab.com/cznic/sqlite/compare/v1.46.1...v1.46.2)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGVib3QiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Yang Song <songy23@users.noreply.github.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [github.com/goccy/go-json](https://github.com/goccy/go-json)
| `v0.10.5` → `v0.10.6` |
![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgoccy%2fgo-json/v0.10.6?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgoccy%2fgo-json/v0.10.5/v0.10.6?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](..open-telemetry/issues/20907) for more information.

---

### Release Notes

<details>
<summary>goccy/go-json (github.com/goccy/go-json)</summary>

###
[`v0.10.6`](https://github.com/goccy/go-json/releases/tag/v0.10.6):
0.10.6

[Compare
Source](https://github.com/goccy/go-json/compare/v0.10.5...v0.10.6)

#### What's Changed

- fix: panic on embedded struct with recursive by
[@&open-telemetry#8203;NgoKimPhu](https://github.com/NgoKimPhu) in
[#&open-telemetry#8203;483](https://github.com/goccy/go-json/pull/483)

#### New Contributors

- [@&open-telemetry#8203;NgoKimPhu](https://github.com/NgoKimPhu) made their
first contribution in
[#&open-telemetry#8203;483](https://github.com/goccy/go-json/pull/483)

**Full Changelog**:
<goccy/go-json@v0.10.5...v0.10.6>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGVib3QiXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Yang Song <songy23@users.noreply.github.com>
#### Description
Standardize naming in the `couchdbreceiver` README so human-readable
references consistently use `CouchDB` instead of mixed variants like
`couchdb` and `Couchdb` in prose. Technical identifiers such as the
`couchdb` receiver name, config keys, and metric names are left
unchanged.


#### Link to tracking issue
Fixes

#### Testing
Verified the README updates and confirmed the remaining `couchdb`
references are intentional technical identifiers.

#### Documentation
Updated `receiver/couchdbreceiver/README.md` to use consistent `CouchDB`
wording in user-facing documentation.

---------

Co-authored-by: Pablo Baeyens <pbaeyens31+github@gmail.com>
Co-authored-by: Yang Song <songy23@users.noreply.github.com>
…result sets (open-telemetry#46219)

#### Description

Add `row_condition` (optional): when set, only rows where the specified
column equals the specified value are used
to produce this metric. Rows that do not match are silently skipped.
This is useful for pivot-style result
sets where each row encodes a different metric (e.g. `SHOW LISTS` in
pgbouncer).

  - `column` (required): the column name to evaluate.
- `value` (required): the expected string value the column must equal
for the row to be included.
  
closes:
open-telemetry#45862
…emetry#46239)

#### Description

Fixes corrupted log entries when the filelog receiver reads a compressed
(`.gz`) file that was produced by rotating and compressing a plaintext
log file while `compression: auto` is configured.

**Root cause**: When a plaintext file (e.g. `app.log`) is rotated and
compressed (e.g. `app.log.gz`), fingerprint matching succeeds because
the decompressed content of the `.gz` begins with the same bytes as the
original plaintext fingerprint. `NewReaderFromMetadata` was previously
reusing the stale plaintext `Offset` and `FileType` without re-detecting
the file format. The scanner then seek'd to the old plaintext byte
position inside the raw compressed stream and read gzip-encoded bytes as
plaintext, producing corrupted log entries.

**Fix**: `NewReaderFromMetadata` now re-detects the file type whenever
`compression` is configured and compares against the persisted
`FileType`. On a plaintext → gzip format transition:

- The old plaintext `Offset` (decompressed bytes already consumed) is
moved into a transient `decompressedBytesToSkip` field on the reader.
- `m.Offset` is zeroed so that if `ReadToEnd` is never called before
`Close()` (e.g. context cancellation), the checkpointed metadata carries
`Offset=0` and `FileType=".gz"` — preventing the same corruption on the
subsequent poll.
- `createGzipReader` starts decompression from byte 0 and discards the
already-consumed decompressed bytes via `io.CopyN`, so only new content
is emitted.

On a gzip → plaintext transition the offset is reset to 0, **which can
cause potential duplicates** - But this is an edge case

Additionally fixes a latent bug in `createGzipReader` where
`io.NewSectionReader` was passed the total file size as the byte-count
parameter instead of `currentEOF - compressedStart`, causing the section
to span past the actual file boundary.

#### Link to tracking issue

Fixes open-telemetry#46105

#### Testing

- Added `TestNewReaderFromMetadataForRotationWithCompression`, a
regression test that:
- Creates a plaintext file, reads lines 1–2, and saves the resulting
metadata (`Offset > 0`, `FileType=""`).
  - Simulates rotation by writing a `.gz` containing all 4 lines.
- Calls `NewReaderFromMetadata` with the stale plaintext metadata
against the new `.gz` file.
- Asserts `FileType=".gz"`, `Offset=0`, and that only lines 3–4 are
emitted (no corruption, no duplicates).
- Existing `TestNewReaderFromMetadataConcurrentAccess` validates no data
race on `FileAttributes` map access.
- Validated end-to-end with a locally built `otelcontribcol` binary
using `compression: auto`, a `file_storage` extension for checkpoint
persistence, and a shell script that writes 2 plaintext lines, waits for
the collector to consume them, then atomically compresses the file to
`.gz` with 4 lines — confirming only lines 3 and 4 are emitted after
rotation with no corrupted output.
- Validated with user reproduce steps in issue (resulted in no corrupted
output)

#### Documentation

Added changelog yaml entry summarizing the issue and fix.

---------

Co-authored-by: Andrzej Stencel <andrzej.stencel@elastic.co>
open-telemetry#46944)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Stanza parses Windows Event XML into a structured log body, but several
fields present in the raw XML were being silently dropped:

- RenderingInfo was consumed internally to populate the top-level level,
task, opcode, keywords, and message fields, but was never itself emitted
into the body. Fields it carries that have no top-level equivalent —
culture, channel, and provider (the human-readable publisher name) —
were lost entirely on every event rendered via the deep path.
- UserData was not parsed at all. Some providers (e.g.
Microsoft-Windows-Eventlog, which uses UserData for event 1102 — audit
log cleared) use UserData as a structured alternative to EventData.
Those events produced an empty event_data in the body with no indication
that structured data existed.
- ProcessingErrorData, DebugData, and BinaryEventData are valid
top-level elements defined in the Windows Event Schema that the
receiver's EventXML struct had no fields for, so they were silently
discarded during XML unmarshalling.

This PR exposes all previously dropped fields in the structured log
body:

- Emit RenderingInfo as a top-level rendering_info key in the body,
containing all fields: message, level, task, opcode, keywords, culture,
channel, and provider. The existing behavior of using RenderingInfo
values to populate the top-level level, task, opcode, keywords, and
message fields would be preserved — rendering_info is an addition, not a
replacement.
- Parse and emit UserData as a top-level user_data key containing the
event type name (the local name of the first child element) and a data
map of key-value pairs from its children. This allows events that use
UserData instead of EventData to be fully represented in the body.
- Map ProcessingErrorData, DebugData, and BinaryEventData to struct
fields in EventXML and emit them as processing_error_data, debug_data,
and binary_event_data body keys respectively when present. All three are
rare in practice on modern Windows but are defined in the [official
schema with Microsoft
documentation](https://learn.microsoft.com/en-us/windows/win32/wes/eventschema-schema)
and should be captured rather than silently dropped.

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes
open-telemetry#46943

<!--Describe what testing was performed and which tests were added.-->
#### Testing

- Manual testing with log.record.original enabled and verification that
the log body contained all fields for RenderingInfo and UserData. Unit
test verification of these fields to prevent regressions.
- Unit testing based on the documentation for ProcessingErrorData,
DebugData, and BinaryEventData - these fields are legacy artifacts from
older Windows systems, but are well-documented as being present in the
Event body.

<!--Describe the documentation added.-->
#### Documentation

Documentation updated to describe new fields.

<!--Please delete paragraphs that you did not use before submitting.-->
…y#47007)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
plumb the logger through to the upload manager and add a debug log for
the object keys being written to S3. I want something similar to what we
have in the [clickhouse
exporter](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/clickhouseexporter/exporter_logs.go#L186)
)

Add configuration schemas for azure functions receiver.

#### Link to tracking issue
Updates
open-telemetry#42214

Signed-off-by: Israel Blancas <iblancasa@gmail.com>
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
"Added `mysql.session.status` attribute to query samples, which
indicates the session status (e.g., 'wait', 'running') at the time of
the sample. This provides additional context for understanding query
performance and behavior."

<!--Describe what testing was performed and which tests were added.-->
#### Testing
Added to existing scraper test

<!--Please delete paragraphs that you did not use before submitting.-->
)

#### Description

Deprecate the built-in encodings, and direct users to the equivalent
encoding extensions.

#### Link to tracking issue

Relates to open-telemetry#45830

#### Testing

Confirmed that warnings are logged when the built-in encodings are used,
e.g. when no encoding is specified at all.

#### Documentation

Updated README.
Add configuration schemas for extensions.

#### Link to tracking issue
Updates
open-telemetry#42214

Signed-off-by: Israel Blancas <iblancasa@gmail.com>
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
Run missing make generate-schemas to fix schema config.

Introduced by open-telemetry#46972

Signed-off-by: Shaanveer Singh <shaanver.singh@gmail.com>
…y#46497)

#### Description

A new optional `tls` configuration block is available in `docker_stats`
receiver config (and the
shared `internal/docker` package). When omitted the connection remains
insecure (plain HTTP or
Unix socket), preserving existing behavior. When provided it supports
the standard
`configtls.ClientConfig` fields: `ca_file`, `cert_file`, `key_file`,
`insecure_skip_verify`,
  `min_version`, and `max_version`.
A warning is now emitted when a plain `tcp://` or `http://` endpoint is
used without TLS,
reflecting Docker's deprecation of unauthenticated TCP connections since
Docker v26.0
(see
https://docs.docker.com/engine/deprecated/#unauthenticated-tcp-connections).

#### Link to tracking issue


[Fixes](open-telemetry#33557)

#### Testing

Unit tests
…3744)

#### Link to tracking issue
Fixes open-telemetry#43606

---------

Signed-off-by: Israel Blancas <iblancasa@gmail.com>
Co-authored-by: Evan Bradley <11745660+evan-bradley@users.noreply.github.com>
…7054)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
The receiver would not collect all metrics previously, this changes the
response parsing to collect all metrics.
…en-telemetry#47107)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
In `datadogreceiver`, `sampling.priority` was only set when a span
itself carried `_sampling_priority_v1`. This meant spans in the same
trace chunk could end up with different sampling priority attributes,
and if the priority was only set on the trace chunk, no translated span
got `sampling.priority` at all.

This PR fixes that by resolving sampling priority once per trace chunk,
preferring the chunk priority when present.

#### Link to tracking issue
Fixes open-telemetry#45402

### Testing
Added test

---------

Signed-off-by: Shaanveer Singh <shaanver.singh@gmail.com>
…sumer package (open-telemetry#47134)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

I would like to propose adding myself as a codeowner for the filelog
receiver and fileconsumer packages. I already did some PRs, handled
issues, and I accept the challenge to help maintain those components.

Some recent important improvements that I proposed:
-
open-telemetry#45097
-
open-telemetry#46739

All the PRs and issues in which I was involved:
-
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Apr%20involves%3Apaulojmdias%20label%3Apkg%2Fstanza%2Ffileconsumer
-
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Apr%20involves%3Apaulojmdias%20label%3Areceiver%2Ffilelog
-
https://github.com/open-telemetry/opentelemetry-collector-contrib/pulls?q=is%3Apr+author%3Apaulojmdias+label%3Apkg%2Fstanza%2Ffileconsumer
-
https://github.com/open-telemetry/opentelemetry-collector-contrib/pulls?q=is%3Apr+author%3Apaulojmdias+label%3Areceiver%2Ffilelog

This was discussed in person at KubeCon EU. Thanks for your vote of
confidence @andrzej-stencel 🙏

Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
…lete and span-ingest modes (open-telemetry#46762)

#### Description

Add `sampling_strategy` config to `processor/tailsampling` with two
explicit modes:

- `trace-complete` (default): classic timer-based tail sampling with
full-trace evaluation context.
- `span-ingest`: evaluate each incoming batch on ingest, finalize
terminal outcomes (`sampled`/`dropped`) immediately, and
cleanup-finalize unresolved traces as `not sampled` without policy
re-evaluation.

This implementation also:

- validates strategy values and defaults to `trace-complete`.
- enforces stateless policies in `span-ingest` mode (`IsStateful() ==
false`).
- records ingest-time decision telemetry for `span-ingest`.
- aligns tests/docs/schema/comments with implemented behavior.
- supports earlier batch timing after root-span arrival via
`decision_wait_after_root_received` in both modes (earlier decision in
`trace-complete`, earlier pending cleanup finalization in
`span-ingest`).

#### Link to tracking issue

Fixes open-telemetry#46600.

#### Testing

- `go test ./...` (in `processor/tailsamplingprocessor`)
- Updated/added tests for:
  - ingest-time terminal decisions in `span-ingest`
  - pending cleanup finalization behavior
  - ingest ordering behavior
  - telemetry emission paths

#### Documentation

- Updated `processor/tailsamplingprocessor/README.md` for strategy
semantics and flow.
- Updated `processor/tailsamplingprocessor/config.schema.yaml`
descriptions for strategy/timer behavior.
- Updated strategy/timer comments in
`processor/tailsamplingprocessor/config.go`.
- Added changelog entry:
`.chloggen/tailsampling-sampling-strategy-config.yaml`.
…open-telemetry#45162)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Updates the `router` operator to process batches of entries without
splitting them. The parser now writes all entries as a single batch,
rather than processing them individually.

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes open-telemetry#42393

<!--Describe what testing was performed and which tests were added.-->
#### Testing

Added unit tests to ensure the batches are not split.

---------

Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
…telemetry#46493)

#### Description
When `stream_stats: true` is set, each container maintains a persistent
open Docker stats
stream instead of opening and closing a new connection on every scrape
cycle. The scraper
  reads from the cached latest value, which reduces connection overhead.

(see also here:
https://docs.docker.com/reference/api/engine/version/v1.53/#tag/Container/operation/ContainerStats)
One stats call will wait two cycles within docker engine:
<img width="804" height="227" alt="image"
src="https://github.com/user-attachments/assets/1c264ad5-2e00-4b47-833a-4683c9c4dcc7"
/>


#### Testing
Unit test
…#47147)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
This PR is to propose adding myself to the active group of `filelog`
receiver codeowners.

I have made some code contributions to the receiver:
open-telemetry#44734  
open-telemetry#43777  

I have participated in some issue discussions:
open-telemetry#46496  
open-telemetry#43693 

I also have previous experience working on Fluent Bit, which is a
similar technology that solves a lot of the same problems in different
ways than Stanza.
https://github.com/fluent/fluent-bit/pulls/braydonk    
https://www.youtube.com/watch?v=KrlvWBCGagI 

I look forward to increasing my contributions and reviews on this
component to help push it toward stability!

---------

Co-authored-by: Andrzej Stencel <andrzej.stencel@elastic.co>
…tion (open-telemetry#45323)

Description
new approach after previous pr's
(open-telemetry#44929)
approach was decided as problematic

Link to tracking issue
Fixes
open-telemetry#44371

Testing
Documentation

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Vihas Makwana <121151420+VihasMakwana@users.noreply.github.com>
Co-authored-by: Andrzej Stencel <andrzej.stencel@elastic.co>
…LoadKeyProto checkpoint functions (open-telemetry#47180)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Remove three unused exported functions (`SaveProto`, `LoadProto`, and
`LoadKeyProto`) from `checkpoint_protobuf.go`.

Also make `saveKeyProto` as unexported since it is not used outside of
checkpoint package.

---------

Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
…ey constant (open-telemetry#47181)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Remove unused `archivePollsToArchiveKey` constant from `archive.go`. The
constant is not referenced anywhere in the repository and contains a
typo (`"knonwFiles"` instead of `"knownFiles"`).

Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
open-telemetry#47182)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Remove the deprecated `NilField` type and its tests from
`pkg/stanza/entry`.

The type was marked deprecated with an instruction to use
`Field.IsEmpty` and is only referenced in its own test file.

Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
…of per document (open-telemetry#47170)

#### Description
- syncBulkIndexerSession.Add() was calling getAttributesFromMetadataKeys
+ attribute.NewSet + metric.WithAttributeSet on every document added to
the bulk request. This allocates ~192 bytes per document and dominated
the metric recording path in high-throughput deployments.

- The attribute set is derived from metadata keys on the request
context, which is constant for the lifetime of a single bulk session
(the sending_queue with metadata_keys partitions batches by metadata
value, so all documents in one Consume* call share the same context).
Computing it once in StartSession and caching it on the session struct
is safe and correct.

```
  Before: getAttributesFromMetadataKeys called N times (once per document)
  After: called once per bulk session flush
```
atoulme and others added 27 commits April 10, 2026 00:31
Add tests to the component, and fix the factory to return the logs
receiver.

Continuation of
open-telemetry#47387
…check` (open-telemetry#47516)

Part of:
-
open-telemetry#45339

#### Description

Renames the `tlscheck` receiver type to `tls_check` to match the
snake_case naming convention established in
open-telemetry/opentelemetry-collector#14208.

The previous type `tlscheck` is preserved as a deprecated alias via
`xreceiver.WithDeprecatedTypeAlias`, so existing user configurations
remain functional and will log a deprecation warning at startup.

Metric names (`tlscheck.*`) and the directory layout
(`receiver/tlscheckreceiver`) are intentionally unchanged to avoid
user-facing breakage, matching the precedent set by other receiver
renames under open-telemetry#45339.

#### Link to tracking issue
Part of open-telemetry#45339

#### Testing
- `make generate` regenerates all metadata files with the new type
- `go test ./...` passes
- `make lint` passes (via `make generate` which includes `fmt` + `gci`)
- `make chlog-validate` passes
- `make gendistributions` and `make generate-chloggen-components`
produce matching diffs

#### Documentation
- Added deprecation note in `README.md`
- Updated the config example to use `tls_check:`

Signed-off-by: Nick Nikolakakis <nonicked@protonmail.com>
…try#47349)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
- Adds functionality to auto discover services in windows for sumologic

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
open-telemetry#47390

<!--Describe what testing was performed and which tests were added.-->
#### Testing

Metadata logs with tags populated
```
2026-04-06T13:11:10.084Z        info    sumologicextension@v0.149.0/extension.go:796    Updating collector metadata     {"resource": {"service.instance.id": "fd0a1f8b-4b98-4bab-8d4c-f10d1c36e82c", "service.name": "otelcontribcol", "service.version": "0.149.0"}, "otelcol.component.id": "sumologic", "otelcol.component.kind": "extension", "collector_name": "rshg_collector_010", "collector_id": "00005AF3109117C4", "URL": "https://stag-open-events.sumologic.net/api/v1/otCollectors/metadata", "body": "{\"hostDetails\":{\"name\":\"EC2AMAZ-5G8L46Q.ec2.internal\",\"osName\":\"windows\",\"osVersion\":\"24H2\",\"environment\":\"\"},\"collectorDetails\":{\"runningVersion\":\"0.149.0\"},\"networkDetails\":{\"hostIpAddress\":\"172.31.77.239\"},\"tagDetails\":{\"sumo.disco.enabled\":\"true\",\"sumo.disco.mongodb\":1,\"sumo.disco.mssql\":1,\"sumo.disco.mysql\":1,\"sumo.disco.nginx\":1,\"sumo.disco.tomcat\":1}}\n"}
```


Screenshots of dashboard
<img width="405" height="545" alt="Screenshot 2026-04-06 at 6 42 50 PM"
src="https://github.com/user-attachments/assets/9c18d492-fc88-4bf7-b091-a1b728f91c41"
/>

<img width="390" height="836" alt="Screenshot 2026-04-06 at 6 43 52 PM"
src="https://github.com/user-attachments/assets/b368a3de-3e3a-426b-862d-2a935f3ab86c"
/>


<!--Describe the documentation added.-->
#### Documentation

<!--Please delete paragraphs that you did not use before submitting.-->
…ata.yaml (open-telemetry#47371)

#### Description
- Adds reference URL and `from_version` feature gate information to
`processor.transform.ConvertBetweenSumAndGaugeMetricContext`
- Removes manual feature gate registration
- Generated metadata

#### Link to tracking issue
Part of open-telemetry#46116

#### Testing
- `go build ./...`, `make gotest` and `make golint` all pass
This PR updates the opentelemetry-collector dependencies to
open-telemetry/opentelemetry-collector@d686cf9.

Changes included in this PR:
open-telemetry/opentelemetry-collector@v0.149.0...d686cf9

---------

Signed-off-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
…-telemetry#47527)

This PR migrates the `cloudfoundry.resourceAttributes.allow` feature
gate in `receiver/cloudfoundryreceiver` from manual
`featuregate.GlobalRegistry().MustRegister()` to `metadata.yaml` for
mdatagen code generation, as part of open-telemetry#46116.

**Changes:**
- Added `feature_gates:` section to `metadata.yaml` (with
`reference_url` pointing to the original tracking issue open-telemetry#34824)
- Ran `go generate ./...` to produce
`internal/metadata/generated_feature_gates.go` and update
`documentation.md`
- Removed the manual `MustRegister` block from `converter.go`; updated
`converter.go` and `receiver.go` to use
`metadata.CloudfoundryResourceAttributesAllowFeatureGate`
- Updated `converter_test.go` and `receiver_test.go` to reference the
generated gate variable
- Removed the `forbidigo` lint exclusion for this package from
`.golangci.yml`

**Testing:**
- `go build ./...` passes
- `go test ./...` passes
…n-telemetry#47526)

This PR migrates the `extension.healthcheck.useComponentStatus` feature
gate in `extension/healthcheckextension` from manual
`featuregate.GlobalRegistry().MustRegister()` to `metadata.yaml` for
mdatagen code generation, as part of open-telemetry#46116.

**Changes:**
- Added `feature_gates:` section to `metadata.yaml`
- Ran `go generate ./...` to produce
`internal/metadata/generated_feature_gates.go` and update
`documentation.md`
- Removed the manual `MustRegister` block from `factory.go`; updated
`factory.go` and `config.go` to use
`metadata.ExtensionHealthcheckUseComponentStatusFeatureGate`
- Updated `factory_test.go`, `integration_test.go`, and `config_test.go`
to reference the generated gate variable
- Removed the `forbidigo` lint exclusion for this package from
`.golangci.yml`

**Testing:**
- `go build ./...` passes
- `go test ./...` passes

Note: The original `factory.go` registration included
`WithRegisterToVersion("v0.147.0")`, but `mdatagen` does not support
`to_version` for alpha-stage gates. This field has been dropped; the
gate behavior is otherwise identical.
… mdatagen (open-telemetry#47512)

This PR migrates the `metricsgeneration.MatchAttributes` feature gate in
`processor/metricsgenerationprocessor` from manual
`featuregate.GlobalRegistry().MustRegister()` to `metadata.yaml` for
mdatagen code generation, as part of open-telemetry#46116.

**Changes:**
- Added `feature_gates:` section to `metadata.yaml`
- Ran `go generate ./...` to produce
`internal/metadata/generated_feature_gates.go` and update
`documentation.md`
- Removed the manual `MustRegister` block from `processor.go`; updated
the call site to use
`metadata.MetricsgenerationMatchAttributesFeatureGate`
- Updated `processor_test.go` to reference the generated gate variable
- Removed the `forbidigo` lint exclusion for this package from
`.golangci.yml`

**Testing:**
```
go build ./...  # passes
go test ./...   # ok github.com/open-telemetry/opentelemetry-collector-contrib/processor/metricsgenerationprocessor
```
## Summary

This PR introduces the `spanpruningprocessor`, a new trace processor
that reduces trace storage costs while preserving observability value.
It intelligently identifies and aggregates repetitive leaf spans within
traces, replacing groups of similar operations with single summary spans
that capture the full statistical picture.

This is a reduced-scope MVP of open-telemetry#45617 (now closed), focusing on the core
aggregation algorithm. Advanced features like outlier detection, outlier
preservation, histogram buckets, attribute loss analysis, and byte-size
metrics will follow in subsequent PRs once the foundation is merged.

Component donation issue: open-telemetry#45654

## The Problem

Modern distributed systems generate enormous volumes of trace data. A
significant portion consists of repetitive, similar spans -- think N+1
database queries, batch HTTP calls, or fan-out operations. Storing every
individual span is expensive and often provides diminishing analytical
value beyond the first few instances.

Current solutions are inadequate:

- **Head sampling** loses entire traces, breaking root cause analysis
- **Tail sampling** helps but still keeps every span in sampled traces
- **Manual instrumentation changes** require code modifications across
services

## The Solution

The Span Pruning Processor identifies duplicate or similar leaf spans
within a single trace, groups them, and replaces each group with a
single aggregated summary span. When leaf spans are aggregated, the
processor also recursively aggregates their parent spans if all children
of those parents are being aggregated.

**Leaf spans** are spans that are not referenced as a parent by any
other span in the trace. They typically represent the last actions in an
execution call stack (e.g., individual database queries, HTTP calls to
external services).

Spans are grouped by:
1. **Span name** - spans must have the same name
2. **Span kind** - spans must have the same kind (Internal, Server,
Client, Producer, Consumer)
3. **Status code** - spans must have the same status (OK, Error, or
Unset)
4. **TraceState** - spans must have identical TraceState values (for
Consistent Probability Sampling compatibility)
5. **Configured attributes** - spans must have matching values for
attributes specified in `group_by_attributes`
6. **Parent span name** - leaf spans must share the same parent span
name to be grouped together

Parent spans are eligible for aggregation when all of their children are
aggregated, they share the same name, kind, and status code, and they
are not root spans.

## Use Cases

- **Database query optimization**: When an application makes many
similar database queries (e.g., N+1 queries), aggregate them into a
single summary span
- **Batch operations**: Consolidate many similar leaf operations into a
single representative span
- **Cost reduction**: Reduce trace storage costs by eliminating
redundant span data

## Configuration

```yaml
processors:
  spanpruning:
    # Attributes to use for grouping similar leaf spans (supports glob patterns)
    # Spans with the same name AND same values for matching attributes will be grouped
    # Examples:
    #   - "db.*" matches db.operation, db.name, db.statement, etc.
    #   - "http.request.*" matches http.request.method, http.request.header, etc.
    #   - "db.operation" matches only the exact key "db.operation"
    group_by_attributes:
      - "db.*"
      - "http.method"

    # Minimum number of similar leaf spans required before aggregation
    # Default: 5
    min_spans_to_aggregate: 3

    # Maximum depth of parent span aggregation above leaf spans
    # 0 = only aggregate leaf spans (no parent aggregation)
    # -1 = unlimited depth
    # Default: 1
    max_parent_depth: 1

    # Prefix for aggregation statistics attributes
    # Default: "aggregation."
    aggregation_attribute_prefix: "batch."
```

## Configuration Options

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `group_by_attributes` | []string | [] | Attribute patterns for
grouping (supports glob patterns like `db.*`) |
| `min_spans_to_aggregate` | int | 5 | Minimum group size before
aggregation occurs |
| `max_parent_depth` | int | 1 | Max depth of parent aggregation
(0=none, -1=unlimited) |
| `aggregation_attribute_prefix` | string | "aggregation." | Prefix for
aggregation statistics attributes |

### Glob Pattern Support

The `group_by_attributes` field supports glob patterns for matching
attribute keys:

| Pattern | Matches |
|---------|---------|
| `db.*` | `db.operation`, `db.name`, `db.statement`, etc. |
| `http.request.*` | `http.request.method`,
`http.request.header.content-type`, etc. |
| `rpc.*` | `rpc.method`, `rpc.service`, `rpc.system`, etc. |
| `db.operation` | Only the exact key `db.operation` |

When multiple attributes match a pattern, they are all included in the
grouping key (sorted alphabetically for consistency).

## Summary Span

When spans are aggregated, the summary span includes:

### Properties
- **Name**: Original span name (e.g., `SELECT`)
- **TraceID**: Same as original spans
- **SpanID**: Newly generated unique ID
- **ParentSpanID**: Same as original spans (common parent)
- **Kind**: Same as template span (inherited from slowest span)
- **StartTimestamp**: Earliest start time of all spans in the group
- **EndTimestamp**: Latest end time of all spans in the group
- **Status**: Same as original spans (spans are grouped by status code)
- **TraceState**: Inherited from the template span (preserved for
Consistent Probability Sampling compatibility)
- **Attributes**: Inherited from the slowest span in the group
- **Events**: Inherited from the template (slowest) span
- **Links**: Inherited from the template span

> **Note**: The summary span's duration (`EndTimestamp -
StartTimestamp`) represents the total time window covered by all
aggregated spans, which may exceed `duration_max_ns`. For example, if
spans overlap or are staggered, the time range can be larger than any
individual span's duration. Use `duration_max_ns` to find the slowest
individual operation.

### What Gets Aggregated Away

When spans are aggregated into a summary span, the following data from
non-template spans is **lost**:

| Data | Behavior |
|------|----------|
| **Span Events** | Only the template (slowest) span's events are
preserved |
| **Span Links** | Only the template span's links are preserved |
| **Attributes** | Non-matching attribute values are lost |
| **Individual Timestamps** | Original start/end times replaced by the
group's time range |
| **SpanIDs** | Original SpanIDs are replaced by a single summary SpanID
|

### Aggregation Attributes

The following attributes are added to the summary span (shown with
default `aggregation_attribute_prefix: "aggregation."`):

| Attribute | Type | Description |
|-----------|------|-------------|
| `<prefix>is_summary` | bool | Always `true` to identify summary spans
|
| `<prefix>span_count` | int64 | Number of spans that were aggregated |
| `<prefix>duration_min_ns` | int64 | Minimum duration in nanoseconds |
| `<prefix>duration_max_ns` | int64 | Maximum duration in nanoseconds |
| `<prefix>duration_avg_ns` | int64 | Average duration in nanoseconds |
| `<prefix>duration_total_ns` | int64 | Total duration in nanoseconds |

## Pipeline Placement

This processor is designed to work best when placed after processors
that ensure complete traces are available:

```yaml
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [groupbytrace, spanpruning, batch]
      exporters: [otlp]
```

Or with tail sampling:

```yaml
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [tail_sampling, spanpruning, batch]
      exporters: [otlp]
```

## Examples

### Basic Example

A trace with repeated database queries (some failing):

**Before Processing:**
```
root-span (parent)
├── SELECT (leaf) - duration: 10ms, db.operation: select, status: OK
├── SELECT (leaf) - duration: 15ms, db.operation: select, status: OK
├── SELECT (leaf) - duration: 12ms, db.operation: select, status: OK
├── SELECT (leaf) - duration: 50ms, db.operation: select, status: Error
├── SELECT (leaf) - duration: 45ms, db.operation: select, status: Error
└── INSERT (leaf) - duration: 20ms, db.operation: insert, status: OK
```

**After Processing (with `min_spans_to_aggregate: 2`):**
```
root-span (parent)
├── SELECT (summary, status: OK)
│   - aggregation.is_summary: true
│   - aggregation.span_count: 3
│   - aggregation.duration_min_ns: 10000000
│   - aggregation.duration_max_ns: 15000000
│   - aggregation.duration_avg_ns: 12333333
├── SELECT (summary, status: Error)
│   - aggregation.is_summary: true
│   - aggregation.span_count: 2
│   - aggregation.duration_min_ns: 45000000
│   - aggregation.duration_max_ns: 50000000
│   - aggregation.duration_avg_ns: 47500000
└── INSERT (unchanged - only 1 span, below threshold)
```

Note: Spans with different status codes are grouped separately,
preserving error information.

### Recursive Parent Aggregation Example

When spans are aggregated, the processor also checks if their parent
spans can be aggregated. Parent spans are eligible for aggregation when:
1. All of their children are being aggregated
2. They share the same name, kind, and status code with other eligible
parents
3. They are not root spans (must have a parent)
4. At least 2 parents meet the criteria

**Before Processing (with `min_spans_to_aggregate: 2`,
`group_by_attributes: ["db.op"]`):**
```
root
├── handler (status: OK)
│   └── SELECT (db.op=select, status: OK) ───┐
├── handler (status: OK)                      │ leaf group A: 3 OK SELECTs
│   └── SELECT (db.op=select, status: OK) ───┤
├── handler (status: OK)                      │
│   └── SELECT (db.op=select, status: OK) ───┘
├── handler (status: Error)
│   └── SELECT (db.op=select, status: Error) ┐ leaf group B: 2 Error SELECTs
├── handler (status: Error)                   │
│   └── SELECT (db.op=select, status: Error) ┘
├── handler (status: OK)
│   └── INSERT (db.op=insert, status: OK) ──── only 1, below threshold
└── worker (status: OK)
    └── SELECT (db.op=select, status: OK) ──── different parent name
```

**After Processing:**
```
root
├── handler (summary, status: OK, span_count: 3)
│   └── SELECT (summary, status: OK, span_count: 3)
├── handler (summary, status: Error, span_count: 2)
│   └── SELECT (summary, status: Error, span_count: 2)
├── handler (status: OK)
│   └── INSERT (status: OK) ─────────────────────────── unchanged
└── worker (status: OK)
    └── SELECT (status: OK) ─────────────────────────── unchanged
```

**Why each span was handled this way:**

| Span | Result | Reason |
|------|--------|--------|
| 3x handler (OK) with SELECT children | Aggregated | All children
aggregated, same name+kind+status |
| 3x SELECT (OK) under handler | Aggregated | Same name + kind + status
+ attributes + parent name |
| 2x handler (Error) with SELECT children | Aggregated | All children
aggregated, same name+kind+status |
| 2x SELECT (Error) under handler | Aggregated | Same name + kind +
status + attributes + parent name |
| handler (OK) with INSERT child | Unchanged | Child not aggregated
(only 1 INSERT) |
| INSERT (OK) | Unchanged | Below threshold (only 1 span) |
| worker (OK) | Unchanged | Child not aggregated |
| SELECT (OK) under worker | Unchanged | Different parent name than
other SELECTs |

## Consistent Probability Sampling (CPS) Compatibility

The processor is designed to be compatible with [Consistent Probability
Sampling](https://opentelemetry.io/docs/specs/otel/trace/tracestate-probability-sampling/)
(CPS). CPS uses TraceState to carry sampling metadata
(`ot=th:...;rv:...`) where:

- `th` (threshold) indicates the sampling probability threshold
- `rv` (randomness value) provides consistent randomness for sampling
decisions

**Why TraceState matters for aggregation:**

Spans with different TraceState values represent different sampling
populations with different "adjusted counts" (weights). Aggregating them
together would produce statistically incorrect summaries and break
downstream sampling decisions.

The processor uses **exact TraceState matching** (not just the `th`
value) because:
- The `rv` value affects sampling decisions
- Vendor-specific keys may have semantic meaning
- Key ordering may be significant

## Limitations

- Requires complete traces for accurate leaf detection
- Summary span inherits attributes from the slowest span in the group
- Parent spans are only aggregated when ALL their children are
aggregated

## Telemetry

The processor emits the following metrics to help monitor its operation:

### Counters

| Metric | Description |
|--------|-------------|
| `otelcol_processor_spanpruning_spans_received` | Total number of spans
received by the processor |
| `otelcol_processor_spanpruning_spans_pruned` | Total number of spans
removed by aggregation |
| `otelcol_processor_spanpruning_aggregations_created` | Total number of
aggregation summary spans created |
| `otelcol_processor_spanpruning_traces_processed` | Total number of
traces processed |

### Histograms

| Metric | Description |
|--------|-------------|
| `otelcol_processor_spanpruning_aggregation_group_size` | Distribution
of the number of spans per aggregation group |
| `otelcol_processor_spanpruning_processing_duration` | Time taken to
process each batch of traces (in seconds) |

These metrics can be used to:
- Monitor the effectiveness of span pruning (compare `spans_received` vs
`spans_pruned`)
- Track the compression ratio achieved by aggregation
- Identify processing bottlenecks via `processing_duration`
- Understand aggregation patterns via `aggregation_group_size`

## Scope / Future Work

This MVP focuses on the core aggregation engine. The following features
from the original PR (open-telemetry#45617) are planned for follow-up PRs:

- **Outlier detection**: IQR and MAD-based statistical outlier detection
- **Outlier preservation**: Keep slow spans as individual spans while
aggregating normal ones
- **Attribute correlation**: Identify attributes that correlate with
slow operations
- **Histogram buckets**: Latency distribution in summary spans
- **Attribute loss analysis**: Track and report attribute diversity lost
during aggregation
- **Byte-size metrics**: Measure serialized trace sizes before/after
pruning

## Architecture

The processor operates in three phases per trace:

1. **Tree Construction** (`tree.go`): Builds parent-child relationships,
identifies leaves and orphans
2. **Analysis** (`processor.go`, `grouping.go`): Groups similar leaf
spans by key, then walks up the tree to find eligible parent spans for
recursive aggregation
3. **Execution** (`aggregation.go`): Sorts groups top-down, creates
summary spans with preassigned SpanIDs, and batch-removes originals

Key design decisions:
- **Tree-based analysis** avoids O(n^2) parent lookups by pre-computing
relationships
- **Type-safe attribute encoding** (`grouping.go`) ensures correct
grouping for all pdata value types (maps, slices, bytes)
- **Pooled string builders** minimize allocations in the hot
grouping-key path
- **Single-pass statistics** (`stats.go`) computes min/max/avg/total and
time ranges without extra traversals

#### Link to tracking issue

Fixes open-telemetry#45654

#### Testing

- Comprehensive unit tests (`processor_test.go`) covering: leaf span
aggregation, recursive parent aggregation at multiple depths, grouping
by attributes with glob patterns, status code separation, TraceState/CPS
compatibility, span kind grouping, edge cases (empty traces, single
spans, orphans, multiple roots), configuration validation, and template
span selection (events, links, attributes inherited from slowest span)
- Configuration validation tests (`config_test.go`) covering all fields
and error cases
- Aggregation logic tests (`aggregation_test.go`) for duration
calculation and template selection
- Benchmark tests (`processor_benchmark_test.go`) measuring throughput
across varying trace sizes (100-10000 spans) and group counts
- Generated component lifecycle tests and telemetry tests via `mdatagen`

#### Documentation

- Comprehensive `README.md` with configuration reference, glob pattern
examples, summary span schema, pipeline placement guidance, before/after
examples (including recursive parent aggregation), CPS compatibility
notes, limitations, and telemetry reference
- `documentation.md` generated from `metadata.yaml` describing all 6
custom telemetry metrics

---------

Signed-off-by: Sean Porter <portertech@gmail.com>
…cs when container status is missing (open-telemetry#47554)

Replacing
open-telemetry#47538
as we need to merge it before the next release to avoid regression.

Guard `docker.ParseImageName` and `LastTerminationState` access under a
single cs != nil block to avoid a panic when a container spec exists but
kubelet has not yet reported its status.

Taking opportunity to increase test coverage of the
`receiver/k8sclusterreceiver/internal/container` package
…efix from dimension property updates. (open-telemetry#47494)

Add `dimension_client::strip_k8s_label_prefix` option to strip
`k8s.<resource>.label.` prefix from dimension property updates.

Once
open-telemetry#47493
is merged, the k8s cluster receiver will emit Kubernetes resource labels
in entity events with the `k8s.<resource>.label.` prefix per OTel
semantic conventions (e.g. `k8s.pod.label.app`). When
`strip_k8s_label_prefix: true` (the default), the SignalFx exporter
strips this prefix when forwarding labels as dimension properties,
preserving the existing SignalFx behavior (e.g. `app`).
…l semconv (open-telemetry#47493)

Resolves
open-telemetry#47491

Kubernetes resource labels emitted as entity event attributes are now
keyed as `k8s.<resource>.label.<key>` (e.g. `k8s.pod.label.app`) to
align with OTel semantic conventions instead of being emitted verbatim.

Affected resources: pod, node, and all resources going through
GetGenericMetadata (deployment, daemonset, replicaset, statefulset,
cronjob, job, hpa, replicationcontroller).
…utgoing records (open-telemetry#47201)

## Description

Resolves open-telemetry#47193 

This PR adds a new `record_headers` configuration option to the Kafka
exporter

**Changes made:**
* added `record_headers` to `Config` struct
* updated `makeFranzMessages` in the `franz-go` client wrapper to
iterate over the configured map and append them as `kgo.RecordHeader` to
the outgoing messages
* added `TestMakeFranzMessages_RecordHeaders` to verify headers are
successfully attached, bringing test suite to 147 passing tests
* documented the new field and provided an example in the `README.md`
* added `.chloggen/fix-47193.yaml`

## Testing

- [x] added `TestMakeFranzMessages_RecordHeaders`
- [x] all 147 tests passed locally

---------

Signed-off-by: singhvibhanshu <singhvibhanshu@hotmail.com>
…en-telemetry#47331)

#### Description
Add a first-step tail storage extension integration for tailsampling so
span buffering can be backed by an extension implementation.

This keeps the current in-memory behavior as the default and gates
extension-backed `tail_storage` configuration behind
`processor.tailsamplingprocessor.tailstorageextension` while the
interface is still evolving.

There should be no behavior change introduced by this PR.

#### Link to tracking issue
Part of open-telemetry#42326

#### Testing
- `make test` (in `processor/tailsamplingprocessor`)
- `make lint` (in `processor/tailsamplingprocessor`)
- `make chlog-validate` (repo root)
- Added/updated unit tests for config validation and extension
integration paths

#### Documentation
- Updated `processor/tailsamplingprocessor/README.md` with feature-gate
requirements for `tail_storage`
- Added `.chloggen/tailsamplingprocessor-tail-storage-extension.yaml`

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
…Counts (open-telemetry#47352)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Guard BucketCounts access with a length check in convertDoubleHistogram
to avoid index-out-of-range panic when a histogram has explicit bounds
but no corresponding bucket counts.

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes
[47351](open-telemetry#47351)

<!--Describe what testing was performed and which tests were added.-->
#### Testing

Added unit test.

<!--Describe the documentation added.-->
#### Documentation

<!--Please delete paragraphs that you did not use before submitting.-->

Signed-off-by: Icarus Wu <icaruswu66@qq.com>
…ng data on transient backend unavailability. (open-telemetry#47503)

#### Description
Modifying retry settings for sumologic exporter to be more reliable to
transient backend unavailability.
Currently data is dropped after 5 mins of retry, but we need a higher
timeout limit.
Increased total retry timeout from 5mins to 1hr.
Added exponential backoff increasing from 5s to 5min. 

#### Testing
1. Unit tests passing 
2. collector startup and exponential retry settings added verified with
a dummy backend url which is unreachable. Sumologic exporter retry
timeout started from 5s and grew exponentially.


[testsumoExporter.log](https://github.com/user-attachments/files/26605794/testsumoExporter.log)

---------

Co-authored-by: Andrzej Stencel <andrzej.stencel@elastic.co>
Co-authored-by: Curtis Robert <crobert@splunk.com>
… to metadata.yaml and remove linting rule (open-telemetry#47542)

#### Description
* Migrates last feature gate (``) for `processor/transformprocessor` to
metadata.yaml
* Updates factory test to use new metadata feature gate ID
* Enables forbidigo linting rule for `processor/transformprocessor`
(rule forbids manual creation of feature gates)

#### Link to tracking issue
Part of open-telemetry#46116 
Follow-up for open-telemetry#47371 and open-telemetry#47506

#### Testing
`make lint` and `make test` pass.
…ted alias `windowseventlog` (open-telemetry#47359)

Part of:
-
open-telemetry#45339

Assisted-by: Cursor with Composer v2
…-telemetry#47005)

Fixes open-telemetry#46977

---------

Signed-off-by: singhvibhanshu <singhvibhanshu@hotmail.com>
open-telemetry#47336)

….yaml

Part of
[46116](open-telemetry#46116)
- add `hostmetrics.process.bootTimeCache`,
`hostmetrics.process.onWindowsUseNewGetProcesses` and
`receiver.hostmetricsreceiver.UseLinuxMemAvailable` feature gates to
`metadata.yaml`
- remove manual feature gate initialization 
- modify references to use feature gates from `metadata.yaml`

---------

Signed-off-by: eferreyra <eferreyra@newrelic.com>
This updates the semconv imports from 1.38.0 and 1.39.0 to 1.40.0

---------

Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
The `TestTraceNoBackend10kSPS` test have been failing intermittently.
Bumping the memory up to help tests pass more consistently.
<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes open-telemetry#47561

Signed-off-by: Shaanveer Singh <shaanver.singh@gmail.com>
This PR updates the opentelemetry-collector dependencies to
open-telemetry/opentelemetry-collector@5d7304d.

Changes included in this PR:
open-telemetry/opentelemetry-collector@v0.149.0...5d7304d

---------

Signed-off-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Pablo Baeyens <pbaeyens31+github@gmail.com>
Co-authored-by: Andrzej Stencel <andrzej.stencel@elastic.co>
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description
fix MS documentation link of updateBookmark api 

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue
Fixes

<!--Describe what testing was performed and which tests were added.-->
#### Testing

<!--Describe the documentation added.-->
#### Documentation

<!--Please delete paragraphs that you did not use before submitting.-->
…to metadata.yaml (open-telemetry#47583)

<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Removes the following stable feature gates:

- `exporter.datadogexporter.UseLogsAgentExporter`
- `exporter.datadogexporter.metricexportnativeclient`

Migrates other feature gates to metadata.yaml

<!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. -->
#### Link to tracking issue

Updates open-telemetry#46116
The following commands were run to prepare this release:
- make chlog-update VERSION=v0.150.0
- sed -i.bak s/0[.]149[.]0/0.150.0/g versions.yaml
- make multimod-prerelease
- make multimod-sync

---------

Signed-off-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
@Frapschen Frapschen requested a review from JaredTan95 as a code owner April 14, 2026 03:56
@JaredTan95 JaredTan95 merged commit 9d42c2b into insight-main Apr 14, 2026
145 of 177 checks passed
@JaredTan95 JaredTan95 deleted the upgrade-v0.150.0 branch April 14, 2026 04:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.