Skip to content

Optimize the size and pointer bytes for pdata structs#14339

Merged
bogdandrutu merged 1 commit intoopen-telemetry:mainfrom
bogdandrutu:alignfieldsproto-2
Jan 4, 2026
Merged

Optimize the size and pointer bytes for pdata structs#14339
bogdandrutu merged 1 commit intoopen-telemetry:mainfrom
bogdandrutu:alignfieldsproto-2

Conversation

@bogdandrutu
Copy link
Member

@bogdandrutu bogdandrutu commented Dec 31, 2025

There are 2 things that matters for structs:

  1. The overall size - which to ensure minimum size we need to ensure fields are sorted by their alignment (not necessary size).
  2. The pointer bytes - how many bytes of the object that the GC has to potentially scan for pointers. pointers and struct with pointers should be first.

We could probably modify the generator to do this, but it is simpler to run a tool like betteralign.

Field alignment is important for pdata structs because these are on the data path and they are generated for each message we process.

/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exemplar.go:52:15: 24 bytes saved: struct with 48 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exponentialhistogramdatapoint.go:77:36: 8 bytes saved: struct of size 216 could be 208
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exponentialhistogramdatapointbuckets.go:18:43: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportlogspartialsuccess.go:18:31: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportmetricspartialsuccess.go:18:34: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportprofilespartialsuccess.go:18:35: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exporttracepartialsuccess.go:18:32: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_histogramdatapoint.go:74:25: 48 bytes saved: struct with 176 pointer bytes could be 128
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_ipaddr.go:17:13: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_keyvalue.go:17:15: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_keyvalueandunit.go:20:22: 8 bytes saved: struct of size 32 could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_location.go:18:15: 16 bytes saved: struct with 48 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_logrecord.go:20:16: 64 bytes saved: struct with 120 pointer bytes could be 56
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_mapping.go:18:14: 32 bytes saved: struct with 40 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_numberdatapoint.go:49:22: 16 bytes saved: struct with 64 pointer bytes could be 48
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_profile.go:20:14: 64 bytes saved: struct with 136 pointer bytes could be 72
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_requestcontext.go:68:21: 16 bytes saved: struct with 48 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_resource.go:18:15: 8 bytes saved: struct with 40 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_resourceprofiles.go:18:23: 8 bytes saved: struct with 88 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_sample.go:19:13: 8 bytes saved: struct of size 88 could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopelogs.go:18:16: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopemetrics.go:18:19: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopeprofiles.go:18:20: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopespans.go:18:17: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_span.go:20:11: 16 bytes saved: struct of size 216 could be 200
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spancontext.go:18:18: 8 bytes saved: struct of size 56 could be 48
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spanevent.go:20:16: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spanlink.go:21:15: 24 bytes saved: struct with 48 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_summarydatapoint.go:20:23: 32 bytes saved: struct with 64 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_tcpaddr.go:17:14: 16 bytes saved: struct with 40 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_udpaddr.go:17:14: 16 bytes saved: struct with 40 pointer bytes could be 24

@bogdandrutu bogdandrutu requested review from a team and dmitryax as code owners December 31, 2025 13:43
@codecov
Copy link

codecov bot commented Dec 31, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.10%. Comparing base (45c4476) to head (1046d03).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #14339      +/-   ##
==========================================
- Coverage   92.11%   92.10%   -0.01%     
==========================================
  Files         668      668              
  Lines       41363    41363              
==========================================
- Hits        38100    38098       -2     
- Misses       2226     2227       +1     
- Partials     1037     1038       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@bogdandrutu bogdandrutu added this pull request to the merge queue Jan 4, 2026
Merged via the queue into open-telemetry:main with commit a331a4c Jan 4, 2026
62 checks passed
@bogdandrutu bogdandrutu deleted the alignfieldsproto-2 branch January 4, 2026 18:16
Syedowais312 pushed a commit to Syedowais312/opentelemetry-collector that referenced this pull request Jan 14, 2026
…#14339)

There are 2 things that matters for structs:
1. The overall size - which to ensure minimum size we need to ensure
fields are sorted by their alignment (not necessary size).
2. The pointer bytes - how many bytes of the object that the GC has to
potentially scan for pointers. pointers and struct with pointers should
be first.

We could probably modify the generator to do this, but it is simpler to
run a tool like `betteralign`.

Field alignment is important for pdata structs because these are on the
data path and they are generated for each message we process.

```
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exemplar.go:52:15: 24 bytes saved: struct with 48 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exponentialhistogramdatapoint.go:77:36: 8 bytes saved: struct of size 216 could be 208
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exponentialhistogramdatapointbuckets.go:18:43: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportlogspartialsuccess.go:18:31: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportmetricspartialsuccess.go:18:34: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportprofilespartialsuccess.go:18:35: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exporttracepartialsuccess.go:18:32: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_histogramdatapoint.go:74:25: 48 bytes saved: struct with 176 pointer bytes could be 128
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_ipaddr.go:17:13: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_keyvalue.go:17:15: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_keyvalueandunit.go:20:22: 8 bytes saved: struct of size 32 could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_location.go:18:15: 16 bytes saved: struct with 48 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_logrecord.go:20:16: 64 bytes saved: struct with 120 pointer bytes could be 56
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_mapping.go:18:14: 32 bytes saved: struct with 40 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_numberdatapoint.go:49:22: 16 bytes saved: struct with 64 pointer bytes could be 48
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_profile.go:20:14: 64 bytes saved: struct with 136 pointer bytes could be 72
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_requestcontext.go:68:21: 16 bytes saved: struct with 48 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_resource.go:18:15: 8 bytes saved: struct with 40 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_resourceprofiles.go:18:23: 8 bytes saved: struct with 88 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_sample.go:19:13: 8 bytes saved: struct of size 88 could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopelogs.go:18:16: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopemetrics.go:18:19: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopeprofiles.go:18:20: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopespans.go:18:17: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_span.go:20:11: 16 bytes saved: struct of size 216 could be 200
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spancontext.go:18:18: 8 bytes saved: struct of size 56 could be 48
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spanevent.go:20:16: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spanlink.go:21:15: 24 bytes saved: struct with 48 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_summarydatapoint.go:20:23: 32 bytes saved: struct with 64 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_tcpaddr.go:17:14: 16 bytes saved: struct with 40 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_udpaddr.go:17:14: 16 bytes saved: struct with 40 pointer bytes could be 24
```

Signed-off-by: Bogdan Drutu <[email protected]>
Syedowais312 pushed a commit to Syedowais312/opentelemetry-collector that referenced this pull request Jan 15, 2026
…#14339)

There are 2 things that matters for structs:
1. The overall size - which to ensure minimum size we need to ensure
fields are sorted by their alignment (not necessary size).
2. The pointer bytes - how many bytes of the object that the GC has to
potentially scan for pointers. pointers and struct with pointers should
be first.

We could probably modify the generator to do this, but it is simpler to
run a tool like `betteralign`.

Field alignment is important for pdata structs because these are on the
data path and they are generated for each message we process.

```
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exemplar.go:52:15: 24 bytes saved: struct with 48 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exponentialhistogramdatapoint.go:77:36: 8 bytes saved: struct of size 216 could be 208
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exponentialhistogramdatapointbuckets.go:18:43: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportlogspartialsuccess.go:18:31: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportmetricspartialsuccess.go:18:34: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exportprofilespartialsuccess.go:18:35: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_exporttracepartialsuccess.go:18:32: 8 bytes saved: struct with 16 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_histogramdatapoint.go:74:25: 48 bytes saved: struct with 176 pointer bytes could be 128
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_ipaddr.go:17:13: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_keyvalue.go:17:15: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_keyvalueandunit.go:20:22: 8 bytes saved: struct of size 32 could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_location.go:18:15: 16 bytes saved: struct with 48 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_logrecord.go:20:16: 64 bytes saved: struct with 120 pointer bytes could be 56
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_mapping.go:18:14: 32 bytes saved: struct with 40 pointer bytes could be 8
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_numberdatapoint.go:49:22: 16 bytes saved: struct with 64 pointer bytes could be 48
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_profile.go:20:14: 64 bytes saved: struct with 136 pointer bytes could be 72
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_requestcontext.go:68:21: 16 bytes saved: struct with 48 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_resource.go:18:15: 8 bytes saved: struct with 40 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_resourceprofiles.go:18:23: 8 bytes saved: struct with 88 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_sample.go:19:13: 8 bytes saved: struct of size 88 could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopelogs.go:18:16: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopemetrics.go:18:19: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopeprofiles.go:18:20: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_scopespans.go:18:17: 16 bytes saved: struct with 96 pointer bytes could be 80
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_span.go:20:11: 16 bytes saved: struct of size 216 could be 200
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spancontext.go:18:18: 8 bytes saved: struct of size 56 could be 48
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spanevent.go:20:16: 8 bytes saved: struct with 32 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_spanlink.go:21:15: 24 bytes saved: struct with 48 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_summarydatapoint.go:20:23: 32 bytes saved: struct with 64 pointer bytes could be 32
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_tcpaddr.go:17:14: 16 bytes saved: struct with 40 pointer bytes could be 24
/Users/bdrutu/github/opentelemetry-collector/pdata/internal/generated_proto_udpaddr.go:17:14: 16 bytes saved: struct with 40 pointer bytes could be 24
```

Signed-off-by: Bogdan Drutu <[email protected]>
TimoBehrendt pushed a commit to TimoBehrendt/tracebasedlogsampler that referenced this pull request Feb 9, 2026
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [go.opentelemetry.io/collector/component](https://github.com/open-telemetry/opentelemetry-collector) | require | minor | `v1.45.0` → `v1.50.0` | `v1.51.0` |
| [go.opentelemetry.io/collector/component/componenttest](https://github.com/open-telemetry/opentelemetry-collector) | require | minor | `v0.139.0` → `v0.144.0` | `v0.145.0` |
| [go.opentelemetry.io/collector/confmap](https://github.com/open-telemetry/opentelemetry-collector) | require | minor | `v1.45.0` → `v1.50.0` | `v1.51.0` |
| [go.opentelemetry.io/collector/consumer](https://github.com/open-telemetry/opentelemetry-collector) | require | minor | `v1.45.0` → `v1.50.0` | `v1.51.0` |
| [go.opentelemetry.io/collector/consumer/consumertest](https://github.com/open-telemetry/opentelemetry-collector) | require | minor | `v0.139.0` → `v0.144.0` | `v0.145.0` |
| [go.opentelemetry.io/collector/pdata](https://github.com/open-telemetry/opentelemetry-collector) | require | minor | `v1.45.0` → `v1.50.0` | `v1.51.0` |
| [go.opentelemetry.io/collector/processor](https://github.com/open-telemetry/opentelemetry-collector) | require | minor | `v1.45.0` → `v1.50.0` | `v1.51.0` |
| [go.opentelemetry.io/collector/processor/processortest](https://github.com/open-telemetry/opentelemetry-collector) | require | minor | `v0.139.0` → `v0.144.0` | `v0.145.0` |
| [go.uber.org/zap](https://github.com/uber-go/zap) | require | patch | `v1.27.0` → `v1.27.1` |  |

---

### Release Notes

<details>
<summary>open-telemetry/opentelemetry-collector (go.opentelemetry.io/collector/component)</summary>

### [`v1.50.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1500v01440)

##### 🛑 Breaking changes 🛑

- `pkg/exporterhelper`: Change verbosity level for otelcol\_exporter\_queue\_batch\_send\_size metric to detailed. ([#&#8203;14278](open-telemetry/opentelemetry-collector#14278))
- `pkg/service`: Remove deprecated `telemetry.disableHighCardinalityMetrics` feature gate. ([#&#8203;14373](open-telemetry/opentelemetry-collector#14373))
- `pkg/service`: Remove deprecated `service.noopTracerProvider` feature gate. ([#&#8203;14374](open-telemetry/opentelemetry-collector#14374))

##### 🚩 Deprecations 🚩

- `exporter/otlp_grpc`: Rename `otlp` exporter to `otlp_grpc` exporter and add deprecated alias `otlp`. ([#&#8203;14403](open-telemetry/opentelemetry-collector#14403))
- `exporter/otlp_http`: Rename `otlphttp` exporter to `otlp_http` exporter and add deprecated alias `otlphttp`. ([#&#8203;14396](open-telemetry/opentelemetry-collector#14396))

##### 💡 Enhancements 💡

- `cmd/builder`: Avoid duplicate CLI error logging in generated collector binaries by relying on cobra's error handling. ([#&#8203;14317](open-telemetry/opentelemetry-collector#14317))

- `cmd/mdatagen`: Add the ability to disable attributes at the metric level and re-aggregate data points based off of these new dimensions ([#&#8203;10726](open-telemetry/opentelemetry-collector#10726))

- `cmd/mdatagen`: Add optional `display_name` and `description` fields to metadata.yaml for human-readable component names ([#&#8203;14114](open-telemetry/opentelemetry-collector#14114))
  The `display_name` field allows components to specify a human-readable name in metadata.yaml.
  When provided, this name is used as the title in generated README files.
  The `description` field allows components to include a brief description in generated README files.

- `cmd/mdatagen`: Validate stability level for entities ([#&#8203;14425](open-telemetry/opentelemetry-collector#14425))

- `pkg/xexporterhelper`: Reenable batching for profiles ([#&#8203;14313](open-telemetry/opentelemetry-collector#14313))

- `receiver/nop`: add profiles signal support ([#&#8203;14253](open-telemetry/opentelemetry-collector#14253))

##### 🧰 Bug fixes 🧰

- `pkg/exporterhelper`: Fix reference count bug in partition batcher ([#&#8203;14444](open-telemetry/opentelemetry-collector#14444))

<!-- previous-version -->

### [`v1.49.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1490v01430)

##### 💡 Enhancements 💡

- `all`: Update semconv import to 1.38.0 ([#&#8203;14305](open-telemetry/opentelemetry-collector#14305))
- `exporter/nop`: Add profiles support to nop exporter ([#&#8203;14331](open-telemetry/opentelemetry-collector#14331))
- `pkg/pdata`: Optimize the size and pointer bytes for pdata structs ([#&#8203;14339](open-telemetry/opentelemetry-collector#14339))
- `pkg/pdata`: Avoid using interfaces/oneof like style for optional fields ([#&#8203;14333](open-telemetry/opentelemetry-collector#14333))

<!-- previous-version -->

### [`v1.48.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1480v01420)

##### 💡 Enhancements 💡

- `exporter/debug`: Add logging of dropped attributes, events, and links counts in detailed verbosity ([#&#8203;14202](open-telemetry/opentelemetry-collector#14202))

- `extension/memory_limiter`: The memorylimiter extension can be used as an HTTP/GRPC middleware. ([#&#8203;14081](open-telemetry/opentelemetry-collector#14081))

- `pkg/config/configgrpc`: Statically validate gRPC endpoint ([#&#8203;10451](open-telemetry/opentelemetry-collector#10451))
  This validation was already done in the OTLP exporter. It will now be applied to any gRPC client.

- `pkg/service`: Add support to disabling adding resource attributes as zap fields in internal logging ([#&#8203;13869](open-telemetry/opentelemetry-collector#13869))
  Note that this does not affect logs exported through OTLP.

<!-- previous-version -->

### [`v1.47.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1470v01410)

##### 🛑 Breaking changes 🛑

- `pkg/config/confighttp`: Use configoptional.Optional for confighttp.ClientConfig.Cookies field ([#&#8203;14021](open-telemetry/opentelemetry-collector#14021))

##### 💡 Enhancements 💡

- `pkg/config/confighttp`: Setting `compression_algorithms` to an empty list now disables automatic decompression, ignoring Content-Encoding ([#&#8203;14131](open-telemetry/opentelemetry-collector#14131))
- `pkg/service`: Update semantic conventions from internal telemetry to v1.37.0 ([#&#8203;14232](open-telemetry/opentelemetry-collector#14232))
- `pkg/xscraper`: Implement xscraper for Profiles. ([#&#8203;13915](open-telemetry/opentelemetry-collector#13915))

##### 🧰 Bug fixes 🧰

- `pkg/config/configoptional`: Ensure that configoptional.None values resulting from unmarshaling are equivalent to configoptional.Optional zero value. ([#&#8203;14218](open-telemetry/opentelemetry-collector#14218))

<!-- previous-version -->

### [`v1.46.0`](https://github.com/open-telemetry/opentelemetry-collector/blob/HEAD/CHANGELOG.md#v1460v01400)

##### 💡 Enhancements 💡

- `cmd/mdatagen`: `metadata.yaml` now supports an optional `entities` section to organize resource attributes into logical entities with identity and description attributes ([#&#8203;14051](open-telemetry/opentelemetry-collector#14051))
  When entities are defined, mdatagen generates `AssociateWith{EntityType}()` methods on ResourceBuilder
  that associate resources with entity types using the entity refs API. The entities section is backward
  compatible - existing metadata.yaml files without entities continue to work as before.

- `cmd/mdatagen`: Add semconv reference for metrics ([#&#8203;13920](open-telemetry/opentelemetry-collector#13920))

- `connector/forward`: Add support for Profiles to Profiles ([#&#8203;14092](open-telemetry/opentelemetry-collector#14092))

- `exporter/debug`: Disable sending queue by default ([#&#8203;14138](open-telemetry/opentelemetry-collector#14138))
  The recently added sending queue configuration in Debug exporter was enabled by default and had a problematic default size of 1.
  This change disables the sending queue by default.
  Users can enable and configure the sending queue if needed.

- `pkg/config/configoptional`: Mark `configoptional.AddEnabledField` as beta ([#&#8203;14021](open-telemetry/opentelemetry-collector#14021))

- `pkg/otelcol`: This feature has been improved and tested; secure-by-default redacts configopaque values ([#&#8203;12369](open-telemetry/opentelemetry-collector#12369))

##### 🧰 Bug fixes 🧰

- `all`: Ensure service service.instance.id is the same for all the signals when it is autogenerated. ([#&#8203;14140](open-telemetry/opentelemetry-collector#14140))

<!-- previous-version -->

</details>

<details>
<summary>uber-go/zap (go.uber.org/zap)</summary>

### [`v1.27.1`](https://github.com/uber-go/zap/releases/tag/v1.27.1)

[Compare Source](uber-go/zap@v1.27.0...v1.27.1)

Enhancements:

- [#&#8203;1501][]: prevent `Object` from panicking on nils
- [#&#8203;1511][]: Fix a race condition in `WithLazy`.

Thanks to [@&#8203;rabbbit](https://github.com/rabbbit), [@&#8203;alshopov](https://github.com/alshopov), [@&#8203;jquirke](https://github.com/jquirke), [@&#8203;arukiidou](https://github.com/arukiidou) for their contributions to this release.

[#&#8203;1501]: uber-go/zap#1501

[#&#8203;1511]: uber-go/zap#1511

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), 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.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

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

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xMC41IiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://gitea.t000-n.de/t.behrendt/tracebasedlogsampler/pulls/25
Reviewed-by: t.behrendt <[email protected]>
Co-authored-by: Renovate Bot <[email protected]>
Co-committed-by: Renovate Bot <[email protected]>
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.

2 participants