mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2026-06-03 18:35:08 +02:00
bdc1b511c85e4887da9be7ac2f0dfd2c4a30e4d0
1207 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
4c89d3345a |
exphist: replace min, max, sum, and count with atomics (#8025)
This is the first PR towards a lockless fast-path for the exponential histogram aggregation. It just replaces use of min, max, sum and counts with atomic types. You can see the full set of planned changes in https://github.com/open-telemetry/opentelemetry-go/compare/main...dashpole:opentelemetry-go:lockless_exphist_ai. The implementation is largely based on https://github.com/open-telemetry/opentelemetry-go/pull/7535 (which I implemented by hand), but with help from an AI to break it down into smaller PRs, and simplify aspects of the design. Part of https://github.com/open-telemetry/opentelemetry-go/issues/7796 |
||
|
|
82d57cc8b6 |
Add tests for exponential histogram concurrent-safety edge-cases (#8024)
Part of https://github.com/open-telemetry/opentelemetry-go/issues/7796 Improve test coverage of the concurrent-safety of exponential histogram aggregations. This adds two tests: * ZeroValues, which checks that the handling of zero values is correct in concurrent scenarios * RescalingStress, which generates inputs that intentionally cause lots of concurrent rescales. The RescalingStress test inputs the same values into a serial version and parallel version of the exponential histogram aggregation and verifies that the output buckets match afterwards. I used AI to identify where we were missing coverage, and to design and help implement the tests. I've reviewed and modified the tests as needed. |
||
|
|
65f85fc93a |
Improve aggregation concurrent safe tests (#8021)
I'm taking a stab at improving the ConcurrentSafe tests for aggregations before taking on the lockless exponential histogram implementation again. Part of https://github.com/open-telemetry/opentelemetry-go/issues/7796 This PR includes a few improvements: * All concurrent-safe tests now use 10 different attribute sets to make sure we are testing concurrent increments that result in an overflow (the cardinality limit of the test is 3). * All concurrent-safe tests for floats now include decimal valued-inputs. * Improved the validation of the collected metrics: * Validate the total after multiple collects. * Validate that increments are made to the correct bucket for histograms * Validate that the overflow attribute set has the correct total value. This uncovered an apparent race condition where the lastvalue aggregation can collect a value of zero even when no zero-value is recorded. I added a TODO, and will fix this in a follow-up. I used AI to help me design and implement tests, but requested each of the changes, and reviewed the output. --------- Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com> |
||
|
|
f0294a3921 |
Add benchmarks for end-to-end metrics SDK usage (#7768)
### Objective Part of https://github.com/open-telemetry/opentelemetry-go/issues/7743. I need a benchmark that can demonstrate the performance of using our API, SDK, and attributes packages together when following our performance guide. https://github.com/open-telemetry/opentelemetry-go/blob/main/CONTRIBUTING.md#attribute-and-option-allocation-management. I settled on benchmarking three scenarios: "Precomputed", "Dynamic", and "Naive". In the "Precomputed" scenario, it is assumed that the attribute set being measured against is known ahead of time, and that the instrumentation author can enumerate all possible sets, and precompute whatever they want, and keep references to it. In the "Dynamic" scenario, it is assumed that the attribute set being measured against is not known ahead of time, and that it is not feasible to enumerate all possible attribute sets ahead of time. However, this scenario still assumes bounded cardinality, as writing metrics with an unbounded cardinality is not the intended use of the API. I had originally written these benchmarks with varying overall cardinality, but the cardinality does not impact the test results, as long as it is reasonable and bounded (e.g. < 100,000). In the "Naive" scenario, it is assumed the user uses the API in the simplest, most ergonomic way. This is an attempt to measure the "default" experience of our API + SDK that users get when they use it. I also found that relative benchmark results did not change when different levels of parallelism are used, so all benchmark results are single-threaded. ### Results ``` goos: linux goarch: amd64 pkg: go.opentelemetry.io/otel/sdk/metric cpu: Intel(R) Xeon(R) CPU @ 2.20GHz │ out.txt │ │ sec/op │ EndToEndCounterAdd/NoFilter/Attributes/1/Precomputed/WithAttributeSet-24 59.47n ± 12% EndToEndCounterAdd/NoFilter/Attributes/1/Precomputed/WithAttributes-24 54.50n ± 3% EndToEndCounterAdd/NoFilter/Attributes/1/Dynamic/WithAttributeSet-24 164.3n ± 16% EndToEndCounterAdd/NoFilter/Attributes/1/Dynamic/WithAttributes-24 219.5n ± 4% EndToEndCounterAdd/NoFilter/Attributes/1/Naive/WithAttributes-24 268.9n ± 7% EndToEndCounterAdd/NoFilter/Attributes/5/Precomputed/WithAttributeSet-24 51.78n ± 6% EndToEndCounterAdd/NoFilter/Attributes/5/Precomputed/WithAttributes-24 52.95n ± 8% EndToEndCounterAdd/NoFilter/Attributes/5/Dynamic/WithAttributeSet-24 434.9n ± 3% EndToEndCounterAdd/NoFilter/Attributes/5/Dynamic/WithAttributes-24 646.0n ± 3% EndToEndCounterAdd/NoFilter/Attributes/5/Naive/WithAttributes-24 802.3n ± 4% EndToEndCounterAdd/NoFilter/Attributes/10/Precomputed/WithAttributeSet-24 52.00n ± 5% EndToEndCounterAdd/NoFilter/Attributes/10/Precomputed/WithAttributes-24 51.88n ± 8% EndToEndCounterAdd/NoFilter/Attributes/10/Dynamic/WithAttributeSet-24 815.9n ± 3% EndToEndCounterAdd/NoFilter/Attributes/10/Dynamic/WithAttributes-24 1.202µ ± 3% EndToEndCounterAdd/NoFilter/Attributes/10/Naive/WithAttributes-24 1.527µ ± 7% EndToEndCounterAdd/Filtered/Attributes/1/Precomputed/WithAttributeSet-24 136.6n ± 5% EndToEndCounterAdd/Filtered/Attributes/1/Precomputed/WithAttributes-24 138.4n ± 3% EndToEndCounterAdd/Filtered/Attributes/1/Dynamic/WithAttributeSet-24 251.6n ± 5% EndToEndCounterAdd/Filtered/Attributes/1/Dynamic/WithAttributes-24 314.7n ± 7% EndToEndCounterAdd/Filtered/Attributes/1/Naive/WithAttributes-24 357.9n ± 6% EndToEndCounterAdd/Filtered/Attributes/5/Precomputed/WithAttributeSet-24 499.7n ± 4% EndToEndCounterAdd/Filtered/Attributes/5/Precomputed/WithAttributes-24 510.5n ± 5% EndToEndCounterAdd/Filtered/Attributes/5/Dynamic/WithAttributeSet-24 987.1n ± 6% EndToEndCounterAdd/Filtered/Attributes/5/Dynamic/WithAttributes-24 1.169µ ± 9% EndToEndCounterAdd/Filtered/Attributes/5/Naive/WithAttributes-24 1.297µ ± 5% EndToEndCounterAdd/Filtered/Attributes/10/Precomputed/WithAttributeSet-24 1.044µ ± 7% EndToEndCounterAdd/Filtered/Attributes/10/Precomputed/WithAttributes-24 992.6n ± 7% EndToEndCounterAdd/Filtered/Attributes/10/Dynamic/WithAttributeSet-24 1.838µ ± 6% EndToEndCounterAdd/Filtered/Attributes/10/Dynamic/WithAttributes-24 2.258µ ± 4% EndToEndCounterAdd/Filtered/Attributes/10/Naive/WithAttributes-24 2.553µ ± 6% geomean 375.7n │ out.txt │ │ B/op │ EndToEndCounterAdd/NoFilter/Attributes/1/Precomputed/WithAttributeSet-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/1/Precomputed/WithAttributes-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/1/Dynamic/WithAttributeSet-24 88.00 ± 0% EndToEndCounterAdd/NoFilter/Attributes/1/Dynamic/WithAttributes-24 152.0 ± 0% EndToEndCounterAdd/NoFilter/Attributes/1/Naive/WithAttributes-24 232.0 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Precomputed/WithAttributeSet-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Precomputed/WithAttributes-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Dynamic/WithAttributeSet-24 345.0 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Dynamic/WithAttributes-24 665.0 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Naive/WithAttributes-24 1000.0 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Precomputed/WithAttributeSet-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Precomputed/WithAttributes-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Dynamic/WithAttributeSet-24 730.0 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Dynamic/WithAttributes-24 1.401Ki ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Naive/WithAttributes-24 2.102Ki ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Precomputed/WithAttributeSet-24 64.00 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Precomputed/WithAttributes-24 64.00 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Dynamic/WithAttributeSet-24 152.0 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Dynamic/WithAttributes-24 216.0 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Naive/WithAttributes-24 296.0 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Precomputed/WithAttributeSet-24 576.0 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Precomputed/WithAttributes-24 576.0 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Dynamic/WithAttributeSet-24 922.0 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Dynamic/WithAttributes-24 1.213Ki ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Naive/WithAttributes-24 1.539Ki ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Precomputed/WithAttributeSet-24 1.312Ki ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Precomputed/WithAttributes-24 1.312Ki ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Dynamic/WithAttributeSet-24 2.027Ki ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Dynamic/WithAttributes-24 2.716Ki ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Naive/WithAttributes-24 3.414Ki ± 0% geomean ¹ ¹ summaries must be >0 to compute geomean │ out.txt │ │ allocs/op │ EndToEndCounterAdd/NoFilter/Attributes/1/Precomputed/WithAttributeSet-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/1/Precomputed/WithAttributes-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/1/Dynamic/WithAttributeSet-24 2.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/1/Dynamic/WithAttributes-24 3.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/1/Naive/WithAttributes-24 5.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Precomputed/WithAttributeSet-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Precomputed/WithAttributes-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Dynamic/WithAttributeSet-24 2.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Dynamic/WithAttributes-24 3.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/5/Naive/WithAttributes-24 5.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Precomputed/WithAttributeSet-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Precomputed/WithAttributes-24 0.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Dynamic/WithAttributeSet-24 2.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Dynamic/WithAttributes-24 3.000 ± 0% EndToEndCounterAdd/NoFilter/Attributes/10/Naive/WithAttributes-24 5.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Precomputed/WithAttributeSet-24 1.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Precomputed/WithAttributes-24 1.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Dynamic/WithAttributeSet-24 3.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Dynamic/WithAttributes-24 4.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/1/Naive/WithAttributes-24 6.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Precomputed/WithAttributeSet-24 2.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Precomputed/WithAttributes-24 2.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Dynamic/WithAttributeSet-24 4.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Dynamic/WithAttributes-24 5.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/5/Naive/WithAttributes-24 7.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Precomputed/WithAttributeSet-24 2.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Precomputed/WithAttributes-24 2.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Dynamic/WithAttributeSet-24 4.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Dynamic/WithAttributes-24 5.000 ± 0% EndToEndCounterAdd/Filtered/Attributes/10/Naive/WithAttributes-24 7.000 ± 0% geomean ¹ ¹ summaries must be >0 to compute geomean ``` ### Observations * When the attributes are known ahead of time (Precomputed), WithAttributes and WithAttributeSet have equal performance. * When attributes are not known ahead of time (Dynamic), WithAttributes is worse than WithAttributeSet (mostly 1 extra allocation). * When an attribute filter is applied, the performance of the SDK degrades significantly. In the Precomputed case with 10 attributes, the performance goes from 50ns to 1000ns, and from 0 allocations to 2 allocations. |
||
|
|
6d79ac3936 |
fix(deps): update golang.org/x (#8045)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | |---|---|---|---|---|---| | [golang.org/x/crypto](https://pkg.go.dev/golang.org/x/crypto) | [`v0.48.0` → `v0.49.0`](https://cs.opensource.google/go/x/crypto/+/refs/tags/v0.48.0...refs/tags/v0.49.0) |  |  | indirect | minor | | [golang.org/x/mod](https://pkg.go.dev/golang.org/x/mod) | [`v0.33.0` → `v0.34.0`](https://cs.opensource.google/go/x/mod/+/refs/tags/v0.33.0...refs/tags/v0.34.0) |  |  | indirect | minor | | [golang.org/x/net](https://pkg.go.dev/golang.org/x/net) | [`v0.51.0` → `v0.52.0`](https://cs.opensource.google/go/x/net/+/refs/tags/v0.51.0...refs/tags/v0.52.0) |  |  | indirect | minor | | [golang.org/x/telemetry](https://pkg.go.dev/golang.org/x/telemetry) | `e526e8a` → `579e4da` |  |  | indirect | digest | | [golang.org/x/text](https://pkg.go.dev/golang.org/x/text) | [`v0.34.0` → `v0.35.0`](https://cs.opensource.google/go/x/text/+/refs/tags/v0.34.0...refs/tags/v0.35.0) |  |  | indirect | minor | | [golang.org/x/tools](https://pkg.go.dev/golang.org/x/tools) | [`v0.42.0` → `v0.43.0`](https://cs.opensource.google/go/x/tools/+/refs/tags/v0.42.0...refs/tags/v0.43.0) |  |  | require | minor | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/5322) for more information. --- ### 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 is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: dmathieu <damien.mathieu@elastic.co> |
||
|
|
88f8c10823 |
linting: add depguard rule to enforce semconv version (#8041)
### Description This PR adds a `depguard` linter rule to [.golangci.yml](file:///Users/ijasahammed/Documents/open_source/opentelemetry-go/.golangci.yml) to enforce the use of the latest semantic convention version (`v1.40.0`). This rule ensures that: - Any new code importing `otel/semconv` must use `v1.40.0`. - The `semconv/` directory itself is excluded from this check to avoid linting legacy definitions. - The `zipkin exporter` is excluded from this check - Updated `semconv` version to v1.40.0 in the `sdk/log/logger_bench_test.go` test. ### Verification Results I verified this change locally using the following steps: 1. **Full Linter Run**: Ran `make precommit` (which executes `golangci-lint run`). It passed with **0 issues** across the entire repository. 2. **Smoke Test**: Added a temporary import of `go.opentelemetry.io/otel/semconv/v1.20.0` in trace.go. The linter correctly reported the violation: > `trace.go:7:2: import 'go.opentelemetry.io/otel/semconv/v1.20.0' is not allowed from list 'semconv': Use go.opentelemetry.io/otel/semconv/v1.40.0 instead. (depguard)` This change is not performance-critical and does not affect the library's runtime behavior. ### Checklist - [x] Signed CLA - [x] `make precommit` passes. - [x] CHANGELOG.md updated. (Not required) Fixes #7842 --------- Co-authored-by: Robert Pająk <pellared@hotmail.com> Co-authored-by: Damien Mathieu <42@dmathieu.com> |
||
|
|
ddd2b0e398 |
fix(sdk/trace): return spec-compliant TraceIdRatioBased description (#8027)
Optimize performance when sampling is disabled - no need to calculate fraction based on trace id (in `traceIDRatioSampler`) if fraction is zero. --------- Co-authored-by: David Ashpole <dashpole@google.com> Co-authored-by: Damien Mathieu <42@dmathieu.com> |
||
|
|
f4da59e651 |
attribute: change INVALID Type to EMPTY and mark INVALID as deprecated (#8038)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/7932 Noticeable comment from previous PR: https://github.com/open-telemetry/opentelemetry-go/pull/7942#discussion_r2913179215 Print the empty value as empty string per https://opentelemetry.io/docs/specs/otel/common/#empty-values |
||
|
|
aff375ac62 |
chore(sdk/trace): join errors properly (#8030)
Co-authored-by: Robert Pająk <pellared@hotmail.com> |
||
|
|
fabe66658f |
resource: add WithService detector option (#7642)
I was looking at implementing resource detection in otelconf and was finding that all the detectors were implemented in a similar way except for the service detector. Added the resource options in this PR for feedback. Will add tests if the go approvers/maintainers support this approach. --------- Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> Co-authored-by: Damien Mathieu <42@dmathieu.com> |
||
|
|
1f39f186db |
fix(deps): update golang.org/x (#8023)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [golang.org/x/sync](https://pkg.go.dev/golang.org/x/sync) | [`v0.19.0` → `v0.20.0`](https://cs.opensource.google/go/x/sync/+/refs/tags/v0.19.0...refs/tags/v0.20.0) |  |  | | [golang.org/x/sys](https://pkg.go.dev/golang.org/x/sys) | [`v0.41.0` → `v0.42.0`](https://cs.opensource.google/go/x/sys/+/refs/tags/v0.41.0...refs/tags/v0.42.0) |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/5322) for more information. --- ### 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 is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
8b05173581 |
fix(deps): update module github.com/golangci/golangci-lint/v2 to v2.11.1 (#8011)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [github.com/golangci/golangci-lint/v2](https://redirect.github.com/golangci/golangci-lint) | `v2.8.0` → `v2.11.1` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/5322) for more information. --- ### Release Notes <details> <summary>golangci/golangci-lint (github.com/golangci/golangci-lint/v2)</summary> ### [`v2.11.1`](https://redirect.github.com/golangci/golangci-lint/blob/HEAD/CHANGELOG.md#v2111) [Compare Source](https://redirect.github.com/golangci/golangci-lint/compare/v2.11.0...v2.11.1) *Released on 2026-03-06* Due to an error related to AUR, some artifacts of the v2.11.0 release have not been published. This release contains the same things as v2.11.0. ### [`v2.11.0`](https://redirect.github.com/golangci/golangci-lint/blob/HEAD/CHANGELOG.md#v2110) [Compare Source](https://redirect.github.com/golangci/golangci-lint/compare/v2.10.1...v2.11.0) *Released on 2026-03-06* 1. Linters new features or changes - `errcheck`: from 1.9.0 to 1.10.0 (exclude `crypto/rand.Read` by default) - `gosec`: from 2.23.0 to 2.24.6 (new rules: `G113`, `G118`, `G119`, `G120`, `G121`, `G122`, `G123`, `G408`, `G707`) - `noctx`: from 0.4.0 to 0.5.0 (new detection: `httptest.NewRequestWithContext`) - `prealloc`: from 1.0.2 to 1.1.0 - `revive`: from 1.14.0 to 1.15.0 (⚠️ Breaking change: package-related checks moved from `var-naming` to a new rule `package-naming`) 2. Linters bug fixes - `gocognit`: from 1.2.0 to 1.2.1 - `gosec`: from 2.24.6 to 2.24.7 - `unqueryvet`: from 1.5.3 to 1.5.4 ### [`v2.10.1`](https://redirect.github.com/golangci/golangci-lint/blob/HEAD/CHANGELOG.md#v2101) [Compare Source](https://redirect.github.com/golangci/golangci-lint/compare/v2.10.0...v2.10.1) *Released on 2026-02-17* 1. Fixes - buildssa panic ### [`v2.10.0`](https://redirect.github.com/golangci/golangci-lint/blob/HEAD/CHANGELOG.md#v2100) [Compare Source](https://redirect.github.com/golangci/golangci-lint/compare/v2.9.0...v2.10.0) *Released on 2026-02-17* 1. Linters new features or changes - `ginkgolinter`: from 0.22.0 to 0.23.0 - `gosec`: from 2.22.11 to 2.23.0 (new rules: `G117`, `G602`, `G701`, `G702`, `G703`, `G704`, `G705`, `G706`) - `staticcheck`: from 0.6.1 to 0.7.0 2. Linters bug fixes - `godoclint`: from 0.11.1 to 0.11.2 ### [`v2.9.0`](https://redirect.github.com/golangci/golangci-lint/blob/HEAD/CHANGELOG.md#v290) [Compare Source](https://redirect.github.com/golangci/golangci-lint/compare/v2.8.0...v2.9.0) *Released on 2026-02-10* 1. Enhancements - 🎉 go1.26 support 2. Linters new features or changes - `arangolint`: from 0.3.1 to 0.4.0 (new rule: detect potential query injections) - `ginkgolinter`: from 0.21.2 to 0.22.0 (support for wrappers) - `golines`: from 0.14.0 to 0.15.0 - `misspell`: from 0.7.0 to 0.8.0 - `unqueryvet`: from 1.4.0 to 1.5.3 (new options: `check-n1`, `check-sql-injection`, `check-tx-leaks`, `allow`, `custom-rules`) - `wsl`: from 5.3.0 to 5.6.0 (new rule: `after-block`) 3. Linters bug fixes - `modernize`: from 0.41.0 to 0.42.0 - `prealloc`: from 1.0.1 to 1.0.2 - `protogetter`: from 0.3.18 to 0.3.20 4. Misc. - Log information about files when configuration verification - Emit an error when no linters enabled - Do not collect VCS information when loading code </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 is behind base branch, 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41Ni4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Tyler Yahn <codingalias@gmail.com> |
||
|
|
a3941ff595 |
Release v1.42.0/v0.64.0/v0.18.0/v0.0.16 (#8006)
### Added - Add `go.opentelemetry.io/otel/semconv/v1.40.0` package. The package contains semantic conventions from the `v1.40.0` version of the OpenTelemetry Semantic Conventions. See the [migration documentation](./semconv/v1.40.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.39.0`. (#7985) - Add `Err` and `SetErr` on `Record` in `go.opentelemetry.io/otel/log` to attach an error and set record exception attributes in `go.opentelemetry.io/otel/log/sdk`. (#7924) ### Changed - `TracerProvider.ForceFlush` in `go.opentelemetry.io/otel/sdk/trace` joins errors together and continues iteration through SpanProcessors as opposed to returning the first encountered error without attempting exports on subsequent SpanProcessors. (#7856) ### Fixed - Fix missing `request.GetBody` in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp` to correctly handle HTTP2 GOAWAY frame. (#7931) - Fix semconv v1.39.0 generated metric helpers skipping required attributes when extra attributes were empty. (#7964) - Preserve W3C TraceFlags bitmask (including the random Trace ID flag) during trace context extraction and injection in `go.opentelemetry.io/otel/propagation`. (#7834) ### Removed - Drop support for [Go 1.24]. (#7984) |
||
|
|
c9d20155fc |
log: add error field to Record and make SDK to emit exception attributes (#7924)
Fixes #7923 ```sh $ go test -run=^$ -bench=BenchmarkLoggerEmitExceptionAttributes -benchmem -count=5 -benchtime=500ms -cpu=1 goos: darwin goarch: arm64 pkg: go.opentelemetry.io/otel/sdk/log cpu: Apple M4 Pro BenchmarkLoggerSetErrAndEmit 628162 1023 ns/op 5371 B/op 1 allocs/op BenchmarkLoggerSetErrAndEmit 663955 863.3 ns/op 5105 B/op 1 allocs/op BenchmarkLoggerSetErrAndEmit 653888 1067 ns/op 5177 B/op 1 allocs/op BenchmarkLoggerSetErrAndEmit 716438 824.8 ns/op 4764 B/op 1 allocs/op BenchmarkLoggerSetErrAndEmit 746902 999.2 ns/op 5630 B/op 1 allocs/op BenchmarkLoggerSetExceptionAttributesAndEmit 650696 1042 ns/op 5200 B/op 1 allocs/op BenchmarkLoggerSetExceptionAttributesAndEmit 574962 980.7 ns/op 4743 B/op 1 allocs/op BenchmarkLoggerSetExceptionAttributesAndEmit 536736 989.2 ns/op 5049 B/op 1 allocs/op BenchmarkLoggerSetExceptionAttributesAndEmit 558511 1190 ns/op 4870 B/op 1 allocs/op BenchmarkLoggerSetExceptionAttributesAndEmit 669452 978.8 ns/op 5067 B/op 1 allocs/op PASS ok go.opentelemetry.io/otel/sdk/log 6.994s ``` TODO after merged: - https://github.com/open-telemetry/opentelemetry-go/pull/7924#discussion_r2832906451 --------- Signed-off-by: Israel Blancas <iblancasa@gmail.com> Co-authored-by: Robert Pająk <pellared@hotmail.com> Co-authored-by: Damien Mathieu <42@dmathieu.com> |
||
|
|
fdd1320c39 |
TracerProvider ForceFlush() Error Fix (#7856)
Previously upon a SpanProcessor's ForceFlush returning an error, it would return that error and not attempt to flush subsequent SpanProcessors. Now when an error is encountered, it will Join the new error with the existing errors and continue iterating through the SpanProcessors and return the consolidated error at the end of iteration. This is in line with the workflow found in LoggerProvider's ForceFlush. --------- Co-authored-by: Robert Pająk <pellared@hotmail.com> |
||
|
|
60161f97c4 |
refactor: replace uint64 and int32 with atomic types in tests (#7941)
Because [atomic types](https://go.dev/doc/go1.19#atomic_types) are easier to use. |
||
|
|
5b5c2c5d6d | Upgrade to semconv/v1.40.0 (#7991) | ||
|
|
a18614cbc2 |
chore(deps): update module github.com/securego/gosec/v2 to v2.24.7 (#7988)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [github.com/securego/gosec/v2](https://redirect.github.com/securego/gosec) | `v2.23.0` → `v2.24.7` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/5322) for more information. --- ### Release Notes <details> <summary>securego/gosec (github.com/securego/gosec/v2)</summary> ### [`v2.24.7`](https://redirect.github.com/securego/gosec/releases/tag/v2.24.7) [Compare Source](https://redirect.github.com/securego/gosec/compare/v2.24.6...v2.24.7) #### Changelog - [`bb17e42`](https://redirect.github.com/securego/gosec/commit/bb17e422fc34bf4c0a2e5cab9d07dc45a68c040c) Ignore nosec comments in action integration workflow to generate some warnings ([#​1573](https://redirect.github.com/securego/gosec/issues/1573)) - [`e1502ad`](https://redirect.github.com/securego/gosec/commit/e1502ad21653d1c6717e33f1221c3ce2d5c8581f) Add a workflow for action integration test ([#​1571](https://redirect.github.com/securego/gosec/issues/1571)) - [`f8691bd`](https://redirect.github.com/securego/gosec/commit/f8691bd77bab5430ccb538e6f253275e82577afc) fix(sarif): avoid invalid null relationships in SARIF output ([#​1569](https://redirect.github.com/securego/gosec/issues/1569)) - [`ade1d0e`](https://redirect.github.com/securego/gosec/commit/ade1d0e0a04ec8ae98da98614d42524621d40df2) chore: migrate gosec container image references to GHCR ([#​1567](https://redirect.github.com/securego/gosec/issues/1567)) ### [`v2.24.6`](https://redirect.github.com/securego/gosec/releases/tag/v2.24.6) [Compare Source](https://redirect.github.com/securego/gosec/compare/v2.24.5...v2.24.6) #### Changelog - [`88835e8`](https://redirect.github.com/securego/gosec/commit/88835e86bba381290c2f60a1c73610995b1502eb) Update gorelease to use the latest cosign bundle argument ([#​1565](https://redirect.github.com/securego/gosec/issues/1565)) ### [`v2.24.5`](https://redirect.github.com/securego/gosec/compare/v2.24.4...v2.24.5) [Compare Source](https://redirect.github.com/securego/gosec/compare/v2.24.4...v2.24.5) ### [`v2.24.4`](https://redirect.github.com/securego/gosec/compare/v2.24.3...v2.24.4) [Compare Source](https://redirect.github.com/securego/gosec/compare/v2.24.3...v2.24.4) ### [`v2.24.3`](https://redirect.github.com/securego/gosec/compare/v2.24.2...v2.24.3) [Compare Source](https://redirect.github.com/securego/gosec/compare/v2.24.2...v2.24.3) ### [`v2.24.2`](https://redirect.github.com/securego/gosec/compare/v2.24.1...v2.24.2) [Compare Source](https://redirect.github.com/securego/gosec/compare/v2.24.1...v2.24.2) ### [`v2.24.1`](https://redirect.github.com/securego/gosec/compare/v2.24.0...v2.24.1) [Compare Source](https://redirect.github.com/securego/gosec/compare/v2.24.0...v2.24.1) ### [`v2.24.0`](https://redirect.github.com/securego/gosec/releases/tag/v2.24.0) [Compare Source](https://redirect.github.com/securego/gosec/compare/v2.23.0...v2.24.0) #### Changelog - [`271492b`](https://redirect.github.com/securego/gosec/commit/271492bcd930ef72dfb9d00e5bb9544b3b407fb5) fix: G704 false positive on const URL ([#​1551](https://redirect.github.com/securego/gosec/issues/1551)) - [`1341aea`](https://redirect.github.com/securego/gosec/commit/1341aeadb4c334014c4834c745344edb9dcf85b0) fix(G705): eliminate false positive for non-HTTP io.Writer ([#​1550](https://redirect.github.com/securego/gosec/issues/1550)) - [`f2262c8`](https://redirect.github.com/securego/gosec/commit/f2262c88ffdfc9eb7be8444db19caa17cc71810f) G120: avoid false positive when MaxBytesReader is applied in middleware ([#​1547](https://redirect.github.com/securego/gosec/issues/1547)) - [`5b580c7`](https://redirect.github.com/securego/gosec/commit/5b580c76e4714fa553b2ceb8169a071e45bf6428) Fix G602 regression coverage for issue [#​1545](https://redirect.github.com/securego/gosec/issues/1545) and stabilize G117 TOML test dependency ([#​1546](https://redirect.github.com/securego/gosec/issues/1546)) - [`eba2d15`](https://redirect.github.com/securego/gosec/commit/eba2d1582b13e37d5b6c991b643827bc60e58156) taint: skip `context.Context` arguments during taint propagation to fix false positives ([#​1543](https://redirect.github.com/securego/gosec/issues/1543)) - [`a6381c1`](https://redirect.github.com/securego/gosec/commit/a6381c1e2fe9a9a33ef105c76bea3191402ea4b3) test: add missing rules to formatter report tests ([#​1540](https://redirect.github.com/securego/gosec/issues/1540)) - [`fea9725`](https://redirect.github.com/securego/gosec/commit/fea9725934065d3dd5c96352f89f75d117ac12f6) chore(deps): update all dependencies ([#​1541](https://redirect.github.com/securego/gosec/issues/1541)) - [`f3e2fac`](https://redirect.github.com/securego/gosec/commit/f3e2fac4d58b7eca54307cd40ce2a836a12e4d95) Regenrate the TLS config rule ([#​1539](https://redirect.github.com/securego/gosec/issues/1539)) - [`200461f`](https://redirect.github.com/securego/gosec/commit/200461fcf74ed836305bf95f72568c20925730c5) Improve documentation ([#​1538](https://redirect.github.com/securego/gosec/issues/1538)) - [`078a62a`](https://redirect.github.com/securego/gosec/commit/078a62afc3331206fec1cd9a03637983ec4f9fc8) Expand analyzer-core test coverage for orchestration, go/analysis adapter logic, and taint integration ([#​1537](https://redirect.github.com/securego/gosec/issues/1537)) - [`ffdc620`](https://redirect.github.com/securego/gosec/commit/ffdc6205c82278cee0b62923814141923794219e) Add unit tests for CLI orchestration, TLS config generation, and SSA cache behavior ([#​1536](https://redirect.github.com/securego/gosec/issues/1536)) - [`c13a486`](https://redirect.github.com/securego/gosec/commit/c13a48626bc160ef1caa293679044b5667d4d8ef) Add G707 taint analyzer for SMTP command/header injection ([#​1535](https://redirect.github.com/securego/gosec/issues/1535)) - [`f61ed31`](https://redirect.github.com/securego/gosec/commit/f61ed314c2467116ec3a5126150cb2b29a623406) Add G123 analyzer for tls.VerifyPeerCertificate resumption bypass risk ([#​1534](https://redirect.github.com/securego/gosec/issues/1534)) - [`b568aa1`](https://redirect.github.com/securego/gosec/commit/b568aa1445e110ed12abe5c2433b3cfbcd0a5935) Add G122 SSA analyzer for filepath.Walk/WalkDir symlink TOCTOU race risks ([#​1532](https://redirect.github.com/securego/gosec/issues/1532)) - [`1735e5a`](https://redirect.github.com/securego/gosec/commit/1735e5a9acd155702b8c6137d323df886c0252b5) fix(G602): avoid false positives for range-over-array indexing ([#​1531](https://redirect.github.com/securego/gosec/issues/1531)) - [`caf93d0`](https://redirect.github.com/securego/gosec/commit/caf93d07f10ef7d07006011b17f1d9bd218b5a9d) Improve taint analyzer performance with shared SSA cache, parallel analyzer execution, and CI regression guard ([#​1530](https://redirect.github.com/securego/gosec/issues/1530)) - [`bd11fbe`](https://redirect.github.com/securego/gosec/commit/bd11fbe2bacb0abf1e541df8b6ec6b040bbe2723) fix: taint analysis false positives with G703,G705 ([#​1522](https://redirect.github.com/securego/gosec/issues/1522)) - [`e34e8dd`](https://redirect.github.com/securego/gosec/commit/e34e8dd8e880694cfa801d79977e2d9973df3fa1) Extend the G117 rule to cover other types of serialization such as yaml/xml/toml ([#​1529](https://redirect.github.com/securego/gosec/issues/1529)) - [`b940702`](https://redirect.github.com/securego/gosec/commit/b940702d5e385d1a68def10326b1658e780655fe) Fix the G117 rule to take the JSON serialization into account ([#​1528](https://redirect.github.com/securego/gosec/issues/1528)) - [`4f84627`](https://redirect.github.com/securego/gosec/commit/4f846273804abaf7e040f77b26bf2866336e8af9) (docs) fix justification format ([#​1524](https://redirect.github.com/securego/gosec/issues/1524)) - [`36ba72b`](https://redirect.github.com/securego/gosec/commit/36ba72bb7f91306f5210a821f409696c03dcbf2b) Add G121 analyzer for unsafe CORS bypass patterns in CrossOriginProtection ([#​1521](https://redirect.github.com/securego/gosec/issues/1521)) - [`238f982`](https://redirect.github.com/securego/gosec/commit/238f9823256b1c4a6d7b0ccd7fa0f2ce1123c820) Add G120 SSA analyzer for unbounded form parsing in HTTP handlers ([#​1520](https://redirect.github.com/securego/gosec/issues/1520)) - [`89cde27`](https://redirect.github.com/securego/gosec/commit/89cde277b5e2b4a5dc47eb710911c51a0cb33b63) Add G119 analyzer for unsafe redirect header propagation in CheckRedirect callbacks ([#​1519](https://redirect.github.com/securego/gosec/issues/1519)) - [`14fdd9c`](https://redirect.github.com/securego/gosec/commit/14fdd9cb07c02ab1506fcc336f49c84bf27a5c2d) Fix G115 false positives and negatives (Issue [#​1501](https://redirect.github.com/securego/gosec/issues/1501)) ([#​1518](https://redirect.github.com/securego/gosec/issues/1518)) - [`cec54ec`](https://redirect.github.com/securego/gosec/commit/cec54ec685eda3083e2ab1adf72b6b7ec6cfdb6e) chore(deps): update all dependencies ([#​1517](https://redirect.github.com/securego/gosec/issues/1517)) - [`2b2077e`](https://redirect.github.com/securego/gosec/commit/2b2077e921b56c7ce6545cccceea0556ff8d5d91) Add G118 SSA analyzer for context propagation failures that can cause goroutine/resource leaks ([#​1516](https://redirect.github.com/securego/gosec/issues/1516)) - [`a7666f3`](https://redirect.github.com/securego/gosec/commit/a7666f3c70c94d07dfb03e81613fed34bccc89ae) Add G113: Detect HTTP Request Smuggling via conflicting headers (CVE-2025-22891, CWE-444) ([#​1515](https://redirect.github.com/securego/gosec/issues/1515)) - [`47f8b52`](https://redirect.github.com/securego/gosec/commit/47f8b52fb8700c7ba017ffcc0ea6a32c83e33115) Add G408: SSH PublicKeyCallback Authentication Bypass Analyzer ([#​1513](https://redirect.github.com/securego/gosec/issues/1513)) - [`4f1f362`](https://redirect.github.com/securego/gosec/commit/4f1f362671654660f7145c3c8655ffeaed037d55) Add more unit tests to improve coverage ([#​1512](https://redirect.github.com/securego/gosec/issues/1512)) - [`9344582`](https://redirect.github.com/securego/gosec/commit/9344582ee4bd87b8fa5bc2e483d90fa661f8aa71) Improve test coverage in various areas ([#​1511](https://redirect.github.com/securego/gosec/issues/1511)) - [`8d1b2c6`](https://redirect.github.com/securego/gosec/commit/8d1b2c63ae44e315fb0232813e535891ff0568fc) Imprve the test coverage ([#​1510](https://redirect.github.com/securego/gosec/issues/1510)) - [`993c1c4`](https://redirect.github.com/securego/gosec/commit/993c1c4da2d4426f7567591e23f53ee9f613d07c) Fix incorrect detection of fixed iv in G407 ([#​1509](https://redirect.github.com/securego/gosec/issues/1509)) - [`8668b74`](https://redirect.github.com/securego/gosec/commit/8668b748925d8995cf7712d22bde62cbc96f2304) Add support for go 1.26.x and removed support for go 1.24.x ([#​1508](https://redirect.github.com/securego/gosec/issues/1508)) - [`514225c`](https://redirect.github.com/securego/gosec/commit/514225c8cb01a6bab714db1dd557aeb0d7ab9dc9) Fix the sonar report to follow the latest schema ([#​1507](https://redirect.github.com/securego/gosec/issues/1507)) - [`000384e`](https://redirect.github.com/securego/gosec/commit/000384e510a84a1e2a1118e0fbc56518d290113d) fix: broken taint analysis causing false positives ([#​1506](https://redirect.github.com/securego/gosec/issues/1506)) - [`616192c`](https://redirect.github.com/securego/gosec/commit/616192c9d92792998e2ff38530c080cd0fe293a8) fix: panic on float constants in overflow analyzer ([#​1505](https://redirect.github.com/securego/gosec/issues/1505)) - [`79956a3`](https://redirect.github.com/securego/gosec/commit/79956a3b4cdedc9a4cde5f567c57fc8b367448cf) fix: panic when scanning multi-module repos from root ([#​1504](https://redirect.github.com/securego/gosec/issues/1504)) - [`5736e8b`](https://redirect.github.com/securego/gosec/commit/5736e8b88b6ca97fc7e09ef1bf24b205ab35fd9c) fix: G602 false positive for array element access ([#​1499](https://redirect.github.com/securego/gosec/issues/1499)) - [`1b7e1e9`](https://redirect.github.com/securego/gosec/commit/1b7e1e94bc2077fc1adccfc1358399fad2958d5a) Update gosec to version v2.23.0 in the Github action ([#​1496](https://redirect.github.com/securego/gosec/issues/1496)) </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 is behind base branch, 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My40OC4xIiwidXBkYXRlZEluVmVyIjoiNDMuNDguMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Tyler Yahn <codingalias@gmail.com> Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com> |
||
|
|
d5febb955e | Drop support for Go 1.24 (#7984) | ||
|
|
4575a9774d |
Release 1.41.0/0.63.0/0.17.0/0.0.15 (#7977)
This release is the last to support [Go 1.24]. The next release will require at least [Go 1.25]. ### Added - Support testing of [Go 1.26]. (#7902) ### Fixed - Update `Baggage` in `go.opentelemetry.io/otel/propagation` and `Parse` and `New` in `go.opentelemetry.io/otel/baggage` to comply with W3C Baggage specification limits. `New` and `Parse` now return partial baggage along with an error when limits are exceeded. Errors from baggage extraction are reported to the global error handler. (#7880) [Go 1.26]: https://go.dev/doc/go1.26 [Go 1.25]: https://go.dev/doc/go1.25 [Go 1.24]: https://go.dev/doc/go1.24 |
||
|
|
0f1a22484e | chore(deps): update module github.com/securego/gosec/v2 to v2.23.0 (#7899) | ||
|
|
dbeb92241a |
fix(deps): update module golang.org/x/sys to v0.41.0 (#7885)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [golang.org/x/sys](https://pkg.go.dev/golang.org/x/sys) | [`v0.40.0` → `v0.41.0`](https://cs.opensource.google/go/x/sys/+/refs/tags/v0.40.0...refs/tags/v0.41.0) |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### 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 is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NS4yIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
e0ad47f3fe |
sdk/log/observ: guard LogProcessed with Enabled (#7848)
Guards SLP.LogProcessed with processed.Enabled(ctx) to avoid building metric options/attributes when the processed counter is disabled. BenchmarkSLP (noop MeterProvider): LogProcessedWithError: ~106 ns/op, 232 B/op, 3 allocs/op -> ~0.46 ns/op, 0 B/op, 0 allocs/op No behavior change when enabled; existing tests cover enabled path. I don't believe this is a "notable" change, so doesn't need a CHANGELOG entry. Issue: #7800 Co-authored-by: Robert Pająk <pellared@hotmail.com> Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com> |
||
|
|
a3a5317c5c |
Release v1.40.0 (#7859)
### Added - Add `Enabled` method to all synchronous instrument interfaces (`Float64Counter`, `Float64UpDownCounter`, `Float64Histogram`, `Float64Gauge`, `Int64Counter`, `Int64UpDownCounter`, `Int64Histogram`, `Int64Gauge`,) in `go.opentelemetry.io/otel/metric`. This stabilizes the synchronous instrument enabled feature, allowing users to check if an instrument will process measurements before performing computationally expensive operations. (#7763) - Add `AlwaysRecord` sampler in `go.opentelemetry.io/otel/sdk/trace`. (#7724) - Add `go.opentelemetry.io/otel/semconv/v1.39.0` package. The package contains semantic conventions from the `v1.39.0` version of the OpenTelemetry Semantic Conventions. See the [migration documentation](https://github.com/open-telemetry/opentelemetry-go/blob/298cbedf256b7a9ab3c21e41fc5e3e6d6e4e94aa/semconv/v1.39.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.38.0.` (#7783, #7789) ### Changed - `Exporter` in `go.opentelemetry.io/otel/exporter/prometheus` ignores metrics with the scope `go.opentelemetry.io/contrib/bridges/prometheus`. This prevents scrape failures when the Prometheus exporter is misconfigured to get data from the Prometheus bridge. (#7688) - Improve performance of concurrent histogram measurements in `go.opentelemetry.io/otel/sdk/metric`. (#7474) - Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/stdout/stdoutmetric`. (#7492) - Improve the concurrent performance of `HistogramReservoir` in `go.opentelemetry.io/otel/sdk/metric/exemplar` by 4x. (#7443) - Improve performance of concurrent synchronous gauge measurements in `go.opentelemetry.io/otel/sdk/metric`. (#7478) - Improve performance of concurrent exponential histogram measurements in `go.opentelemetry.io/otel/sdk/metric`. (#7702) - Improve the concurrent performance of `FixedSizeReservoir` in `go.opentelemetry.io/otel/sdk/metric/exemplar`. (#7447) - The `rpc.grpc.status_code` attribute in the experimental metrics emitted from `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` is replaced with the `rpc.response.status_code` attribute to align with the semantic conventions. (#7854) - The `rpc.grpc.status_code` attribute in the experimental metrics emitted from `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` is replaced with the `rpc.response.status_code` attribute to align with the semantic conventions. (#7854) ### Fixed - Fix bad log message when key-value pairs are dropped because of key duplication in `go.opentelemetry.io/otel/sdk/log`. (#7662) - Fix `DroppedAttributes` on `Record` in `go.opentelemetry.io/otel/sdk/log` to not count the non-attribute key-value pairs dropped because of key duplication. (#7662) - Fix `SetAttributes` on `Record` in `go.opentelemetry.io/otel/sdk/log` to not log that attributes are dropped when they are actually not dropped. (#7662) - `WithHostID` detector in `go.opentelemetry.io/otel/sdk/resource` to use full path for `ioreg` command on Darwin (macOS). (#7818) - Fix missing `request.GetBody` in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp` to correctly handle HTTP2 GOAWAY frame. (#7794) ### Deprecated - Deprecate `go.opentelemetry.io/otel/exporters/zipkin`. For more information, see the [OTel blog post deprecating the Zipkin exporter](https://opentelemetry.io/blog/2025/deprecating-zipkin-exporters/). (#7670) --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
3264bf171b |
refactor: modernize code (#7850)
Enable the [`modernize`](https://golangci-lint.run/docs/linters/configuration/#modernize) linter in the golangci-lint configuration and fix the reported issues by running `golangci-lint run --enable-only modernize --fix`. The `modernize` linter is internally the same as [gopls modernize](https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/modernize). Similar to #7089. |
||
|
|
82bf2f87b4 |
fix(x): correct source filename in generated test files (#7766)
ref: https://github.com/open-telemetry/opentelemetry-go/pull/7735#discussion_r2667558812 |
||
|
|
714ca7c32e |
Optimize fixedsize reservoir (#7447)
~Depends on #7441, #7443~ This improves the concurrent performance of the fixed size reservoir's Offer function by 4x (i.e. 75% reduction). This improves the performance of Measure() for fixed-size reservoirs by 60% overall. Accomplish this by: * using a single atomic for count and next. This assumes that both can fit in a uint32. * only use a lock to guard changing `w` and `next` together. Offer benchmarks: ``` │ main.txt │ fixedsize.txt │ │ sec/op │ sec/op vs base │ FixedSizeReservoirOffer-24 185.25n ± 4% 45.58n ± 1% -75.40% (p=0.002 n=6) ``` Measure benchmarks: ``` │ main.txt │ fixedsize.txt │ │ sec/op │ sec/op vs base │ SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/0-24 175.45n ± 6% 67.01n ± 9% -61.81% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/1-24 170.25n ± 1% 69.82n ± 6% -58.99% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Int64Counter/Attributes/10-24 167.40n ± 2% 64.52n ± 10% -61.46% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/0-24 173.55n ± 0% 69.17n ± 12% -60.14% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/1-24 169.50n ± 1% 68.55n ± 5% -59.56% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Float64Counter/Attributes/10-24 166.95n ± 1% 65.82n ± 6% -60.58% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/0-24 168.85n ± 1% 67.99n ± 11% -59.73% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/1-24 173.50n ± 1% 66.69n ± 2% -61.56% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Int64UpDownCounter/Attributes/10-24 171.30n ± 5% 67.73n ± 8% -60.46% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/0-24 168.90n ± 2% 67.69n ± 9% -59.92% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/1-24 173.35n ± 2% 68.25n ± 9% -60.63% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsEnabled/Float64UpDownCounter/Attributes/10-24 172.95n ± 2% 70.90n ± 7% -59.01% (p=0.002 n=6) geomean 171.0n 67.83n -60.33% ``` --------- Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com> Co-authored-by: Robert Pająk <pellared@hotmail.com> |
||
|
|
d45961bcda |
resource: specify full path for ioreg command in Darwin host ID reader (#7818)
Use full path when calling `ioreg` to mitigate potential malicious code execution in case of [Path Interception](https://attack.mitre.org/techniques/T1574/007/). Note that path interception typically requires the attacker to influence the environment or place a malicious executable earlier in $PATH, which, in this context, generally implies the script itself would need to be introduced/uploaded (or otherwise placed/executed) in the target environment for the attacker’s substitute `ioreg` to be reached during execution. Reference: - https://cwe.mitre.org/data/definitions/426.html |
||
|
|
61f0e4855c |
Bump semconv from v1.37.0 to v1.39.0 (#7789)
Fixes #7788 --------- Co-authored-by: Damien Mathieu <42@dmathieu.com> |
||
|
|
f98af48bcc |
sdk/log: fix "limit reached" logging and Record.DroppedAttributes (#7662)
Fixes: #6983 Enhance logging and error reporting in the log record attribute handling code, specifically around dropped attributes and duplicate key-value pairs. The main focus is to provide clearer warnings when key-value pairs are dropped due to duplication, and to ensure warnings are only logged when actual drops occur. --------- Co-authored-by: Robert Pająk <pellared@hotmail.com> |
||
|
|
b9920822c3 |
Add TestMergeIdempotent and TestEquivalentStability tests (#7764)
Verifies that Resource.Equivalent() and Resource.Equal() are independent of attribute insertion order, ensuring stable equality semantics and safe use as map keys.Ensures that merging a resource with itself is a no-op, preserving both attributes and schema URL --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Damien Mathieu <42@dmathieu.com> |
||
|
|
7706e21e4a |
metric: add Enabled method to synchronous instruments (#7763)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/7681 |
||
|
|
7e1ff96f6c |
sdk/trace: Add AlwaysRecord sampler (#7724)
### Description - Add `AlwaysRecord` sampler to `sdk/trace`. ### Related issue Closes #7714. --------- Signed-off-by: Vitor Vasconcellos <vitor.vasconcellos@mercadolivre.com> Co-authored-by: Flc゛ <i@flc.io> Co-authored-by: Damien Mathieu <42@dmathieu.com> |
||
|
|
8b00c5fa9c |
fix(deps): update module golang.org/x/sys to v0.40.0 (#7761)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [golang.org/x/sys](https://pkg.go.dev/golang.org/x/sys) | [`v0.39.0` → `v0.40.0`](https://cs.opensource.google/go/x/sys/+/refs/tags/v0.39.0...refs/tags/v0.40.0) |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### 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. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4xIiwidXBkYXRlZEluVmVyIjoiNDIuNjkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
594a13d31e |
fix(deps): update module github.com/golangci/golangci-lint/v2 to v2.8.0 (#7758)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [github.com/golangci/golangci-lint/v2](https://redirect.github.com/golangci/golangci-lint) | `v2.7.2` → `v2.8.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>golangci/golangci-lint (github.com/golangci/golangci-lint/v2)</summary> ### [`v2.8.0`](https://redirect.github.com/golangci/golangci-lint/blob/HEAD/CHANGELOG.md#v280) [Compare Source](https://redirect.github.com/golangci/golangci-lint/compare/v2.7.2...v2.8.0) *Released on 2026-01-07* 1. Linters new features or changes - `godoc-lint`: from 0.10.2 to 0.11.1 (new rule: `require-stdlib-doclink`) - `golines`: from [`442fd00`](https://redirect.github.com/golangci/golangci-lint/commit/442fd0091d95) to 0.14.0 - `gomoddirectives`: from 0.7.1 to 0.8.0 - `gosec`: from [`daccba6`](https://redirect.github.com/golangci/golangci-lint/commit/daccba6b93d7) to 2.22.11 (new rule: `G116`) - `modernize`: from 0.39.0 to 0.40.0 (new analyzers: `stringscut`, `unsafefuncs`) - `prealloc`: from 1.0.0 to 1.0.1 (message changes) - `unqueryvet`: from 1.3.0 to 1.4.0 (new options: `check-aliased-wildcard`, `check-string-concat`, `check-format-strings`, `check-string-builder`, `check-subqueries`, `ignored-functions`, `sql-builders`) 2. Linters bug fixes - `go-critic`: from 0.14.2 to 0.14.3 - `go-errorlint`: from 1.8.0 to 1.9.0 - `govet`: from 0.39.0 to 0.40.0 - `protogetter`: from 0.3.17 to 0.3.18 - `revive`: add missing enable-default-rules setting 3. Documentation - docs: split installation page </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. 🔕 **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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4xIiwidXBkYXRlZEluVmVyIjoiNDIuNjkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: dmathieu <damien.mathieu@elastic.co> |
||
|
|
fa89e4c5ed |
address feedback from #7478 (#7718)
Addresses https://github.com/open-telemetry/opentelemetry-go/pull/7478#pullrequestreview-3583818326, which was left after the PR merged. |
||
|
|
279f1453fe |
Exponential histogram: defer computing count until collect (#7702)
Tiny part of https://github.com/open-telemetry/opentelemetry-go/pull/7535 It doesn't make much of a difference now, since we are bound by lock contention, but it matters once we move to atomics. ``` │ main.txt │ defercount.txt │ │ sec/op │ sec/op vs base │ SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/0-24 300.9n ± 7% 282.8n ± 10% ~ (p=0.394 n=6) SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/1-24 300.0n ± 8% 307.5n ± 3% ~ (p=0.394 n=6) SyncMeasure/NoView/ExemplarsDisabled/ExponentialInt64Histogram/Attributes/10-24 301.4n ± 5% 300.7n ± 5% ~ (p=0.485 n=6) SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/0-24 286.4n ± 4% 284.8n ± 3% ~ (p=0.420 n=6) SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/1-24 303.8n ± 3% 294.3n ± 2% -3.11% (p=0.006 n=6) SyncMeasure/NoView/ExemplarsDisabled/ExponentialFloat64Histogram/Attributes/10-24 297.9n ± 4% 291.6n ± 3% -2.10% (p=0.024 n=6) geomean 298.3n 293.5n -1.62% ``` |
||
|
|
68d2f72614 |
Use sync.Map and atomics for lastvalue aggregations (#7478)
Depends on https://github.com/open-telemetry/opentelemetry-go/pull/7474 This applies similar optimizations as https://github.com/open-telemetry/opentelemetry-go/pull/7427 to the last value aggregation. Changes for last value are contained in https://github.com/open-telemetry/opentelemetry-go/pull/7478/commits/27e14829716bfa5b6cfcdf4841c45c93bf5f0a91. Parallel benchmarks: ``` │ main.txt │ lv.txt │ │ sec/op │ sec/op vs base │ SyncMeasure/NoView/ExemplarsDisabled/Int64Gauge/Attributes/10-24 264.60n ± 3% 66.46n ± 1% -74.88% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsDisabled/Float64Gauge/Attributes/10-24 270.25n ± 4% 69.69n ± 1% -74.21% (p=0.002 n=6) geomean 267.4n 68.05n -74.55% ``` Co-authored-by: Damien Mathieu <42@dmathieu.com> |
||
|
|
e8542ae7f3 |
Optimize histogram reservoir (#7443)
This improves the concurrent performance of the histogram reservoir's
Offer function by 4x (i.e. 75% reduction).
Accomplish this by locking each measurement, rather than locking around
the entire storage. Also, defer extracting the trace context from
context.Context until collection time. This improves the performance of
Offer, which is on the measure hot path. Exemplars are often
overwritten, so deferring the operation until Collect reduces the
overall work.
```
│ main.txt │ hist.txt │
│ sec/op │ sec/op vs base │
FixedSizeReservoirOffer-24 211.4n ± 3% 177.5n ± 3% -16.04% (p=0.002 n=6)
HistogramReservoirOffer-24 200.85n ± 2% 47.41n ± 2% -76.40% (p=0.002 n=6)
geomean 206.1n 91.73n -55.48%
```
Benchmarks for Measure:
```
│ main.txt │ histres.txt │
│ sec/op │ sec/op vs base │
SyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/0-24 436.7n ± 4% 114.8n ± 5% -73.72% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Int64Histogram/Attributes/10-24 472.2n ± 2% 169.7n ± 8% -64.08% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/0-24 431.0n ± 2% 116.3n ± 2% -73.01% (p=0.002 n=6)
SyncMeasure/NoView/ExemplarsEnabled/Float64Histogram/Attributes/10-24 470.9n ± 1% 171.0n ± 5% -63.70% (p=0.002 n=6)
```
I explored using a []atomic.Pointer[measurement], but this had similar
performance while being much more complex (needing a sync.Pool to
eliminate allocations). The single-threaded performance was also much
worse for that solution. See
https://github.com/open-telemetry/opentelemetry-go/compare/main...dashpole:optimize_histogram_reservoir_old.
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Damien Mathieu <42@dmathieu.com>
|
||
|
|
5b8a1d1294 |
sdk/log: improve Processor documentation (#7695)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/7685 - Clarify EnabledParameters contents and Enabled decision semantics - Remove the requirement of Enabled that param cannot be held by the implementation as it is immutable - Refine OnEmit docs around context cancellation and retry handling - Update Shutdown docs to mention Processor/Exporter and OnEmit instead of Export |
||
|
|
f57bf14de2 |
Use sync.Map and atomics for fixed bucket histograms (#7474)
Implement a lockless histogram using atomics, and use a sync.Map for attribute access. This improves performance by ~2x. The design is very similar to https://github.com/open-telemetry/opentelemetry-go/pull/7427, but with one additional change to make the histogram data point itself atomic: * For cumulative histograms, which do not use a hot/cold limitedSyncMap, we use a hot/cold data point. This way, we maintain the keys in the sync map, but still ensure that collection gets a consistent view of measure() calls. Parallel benchmarks: ``` │ main.txt │ hist.txt │ │ sec/op │ sec/op vs base │ SyncMeasure/NoView/ExemplarsDisabled/Int64Histogram/Attributes/10-24 274.5n ± 2% 125.2n ± 5% -54.42% (p=0.002 n=6) SyncMeasure/NoView/ExemplarsDisabled/Float64Histogram/Attributes/10-24 274.1n ± 2% 132.5n ± 2% -51.65% (p=0.002 n=6) geomean 274.3n 128.8n -53.05% ``` zero memory allocations before and after this change for Measure(). Omitted for brevity Benchmarks for collect: ``` │ main.txt │ hist.txt │ │ sec/op │ sec/op vs base │ Collect/NoView/Int64Histogram/1/Attributes/0-24 1.799µ ± 60% 1.702µ ± 6% ~ (p=1.000 n=6) Collect/NoView/Int64Histogram/1/Attributes/1-24 973.7n ± 28% 1720.0n ± 5% +76.65% (p=0.002 n=6) Collect/NoView/Int64Histogram/1/Attributes/10-24 881.0n ± 17% 1710.0n ± 5% +94.09% (p=0.002 n=6) Collect/NoView/Int64Histogram/10/Attributes/0-24 996.1n ± 14% 1781.5n ± 4% +78.85% (p=0.002 n=6) Collect/NoView/Int64Histogram/10/Attributes/1-24 1.029µ ± 67% 1.733µ ± 3% +68.42% (p=0.009 n=6) Collect/NoView/Int64Histogram/10/Attributes/10-24 1.533µ ± 18% 1.708µ ± 4% ~ (p=0.240 n=6) Collect/NoView/Float64Histogram/1/Attributes/0-24 1.222µ ± 120% 1.733µ ± 4% ~ (p=0.065 n=6) Collect/NoView/Float64Histogram/1/Attributes/1-24 893.3n ± 8% 1733.0n ± 4% +94.00% (p=0.002 n=6) Collect/NoView/Float64Histogram/1/Attributes/10-24 860.7n ± 2% 1732.0n ± 5% +101.23% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/0-24 852.5n ± 4% 1758.0n ± 3% +106.22% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/1-24 853.8n ± 3% 1725.0n ± 3% +102.04% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/10-24 843.4n ± 2% 1755.0n ± 4% +108.10% (p=0.002 n=6) geomean 1.028µ 1.732µ +68.46% │ main.txt │ hist.txt │ │ B/op │ B/op vs base │ Collect/NoView/Int64Histogram/1/Attributes/0-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Int64Histogram/1/Attributes/1-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Int64Histogram/1/Attributes/10-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Int64Histogram/10/Attributes/0-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Int64Histogram/10/Attributes/1-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Int64Histogram/10/Attributes/10-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Float64Histogram/1/Attributes/0-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Float64Histogram/1/Attributes/1-24 336.0 ± 0% 2130.5 ± 0% +534.08% (p=0.002 n=6) Collect/NoView/Float64Histogram/1/Attributes/10-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/0-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/1-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/10-24 336.0 ± 0% 2131.0 ± 0% +534.23% (p=0.002 n=6) geomean 336.0 2.081Ki +534.21% │ main.txt │ hist.txt │ │ allocs/op │ allocs/op vs base │ Collect/NoView/Int64Histogram/1/Attributes/0-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Int64Histogram/1/Attributes/1-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Int64Histogram/1/Attributes/10-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Int64Histogram/10/Attributes/0-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Int64Histogram/10/Attributes/1-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Int64Histogram/10/Attributes/10-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Float64Histogram/1/Attributes/0-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Float64Histogram/1/Attributes/1-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Float64Histogram/1/Attributes/10-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/0-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/1-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) Collect/NoView/Float64Histogram/10/Attributes/10-24 5.000 ± 0% 6.000 ± 0% +20.00% (p=0.002 n=6) geomean 5.000 6.000 +20.00% ``` Collect does get substantially worse, but Measure is expected to be called significantly more often than collect. --------- Co-authored-by: Bartlomiej Plotka <bwplotka@gmail.com> |
||
|
|
545883eb6a |
fix(deps): update opentelemetry-go monorepo to v0.15.0 (#7690)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go.opentelemetry.io/otel/log](https://redirect.github.com/open-telemetry/opentelemetry-go) | `v0.14.0` -> `v0.15.0` |  |  | | [go.opentelemetry.io/otel/sdk/log](https://redirect.github.com/open-telemetry/opentelemetry-go) | `v0.14.0` -> `v0.15.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>open-telemetry/opentelemetry-go (go.opentelemetry.io/otel/log)</summary> ### [`v0.15.0`](https://redirect.github.com/open-telemetry/opentelemetry-go/releases/tag/v0.15.0) [Compare Source](https://redirect.github.com/open-telemetry/opentelemetry-go/compare/v0.14.0...v0.15.0) ##### Added - The `WithIDGenerator` `TracerProviderOption` is added to the `go.opentelemetry.io/otel/trace` package to configure an `IDGenerator` for the `TracerProvider`. ([#​1363](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1363)) ##### Changed - The Zipkin exporter now uses the Span status code to determine. ([#​1328](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1328)) - `NewExporter` and `Start` functions in `go.opentelemetry.io/otel/exporters/otlp` now receive `context.Context` as a first parameter. ([#​1357](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1357)) - Move the OpenCensus example into `example` directory. ([#​1359](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1359)) - Moved the SDK's `internal.IDGenerator` interface in to the `sdk/trace` package to enable support for externally-defined ID generators. ([#​1363](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1363)) - Bump `github.com/google/go-cmp` from 0.5.3 to 0.5.4 ([#​1374](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1374)) - Bump `github.com/golangci/golangci-lint` in `/internal/tools` ([#​1375](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1375)) ##### Fixed - Metric SDK `SumObserver` and `UpDownSumObserver` instruments correctness fixes. ([#​1381](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1381)) # Raw changes made between v0.14.0 and v0.15.0 [`61e07a0`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/61e07a0d629ff6a0c8f7054205972adc09540a53) (HEAD -> master, tag: v0.15.0, tag: sdk/v0.15.0, tag: exporters/trace/zipkin/v0.15.0, tag: exporters/trace/jaeger/v0.15.0, tag: exporters/stdout/v0.15.0, tag: exporters/otlp/v0.15.0, tag: exporters/metric/prometheus/v0.15.0, tag: example/zipkin/v0.15.0, tag: example/prometheus/v0.15.0, tag: example/otel-collector/v0.15.0, tag: example/opencensus/v0.15.0, tag: example/namedtracer/v0.15.0, tag: example/jaeger/v0.15.0, tag: example/basic/v0.15.0, tag: bridge/opentracing/v0.15.0, tag: bridge/opencensus/v0.15.0, upstream/master, origin/master, origin/HEAD) Release v0.15.0 ([#​1392](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1392)) [`599c080`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/599c0803ccf2113875e7934b6bf3fdbf5733494b) Fix typo in readme ([#​1390](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1390)) [`eb28005`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/eb28005e2fad10fe050b777a585b64be8cf593cb) Metric Accumulator fix for SumObservers ([#​1381](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1381)) [`970755b`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/970755bd087801619575b7473806356818e24e15) Enable support for externally-defined ID generators ([#​1363](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1363)) [`0021ab0`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/0021ab0a3a47e4abb116bdb227fd77e912006b9e) Rework proto generation ([#​1371](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1371)) [`787e3f4`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/787e3f457a07e3659a7c08a0bd886505da1affab) chore(zipkin-exporter): relay on the status code for the request but still read the response body. ([#​1328](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1328)) [`66db2d8`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/66db2d845ba72bae8fcc1b3d43965470cbe8f5c3) (johananl/master) Build examples last ([#​1370](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1370)) [`958041d`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/958041ddf619a1282e92cfd4c50859f2bc71f9c8) Bump github.com/golangci/golangci-lint in /internal/tools ([#​1375](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1375)) [`e1ff2d1`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/e1ff2d15cfdebe3516d241048f40baa49980f60f) Bump github.com/google/go-cmp from 0.5.3 to 0.5.4 ([#​1374](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1374)) [`5d0372d`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/5d0372dd2ed447fed6fd036f219d208f77d5468d) Fix typo in comment ([#​1377](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1377)) [`55ff277`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/55ff27787da2cdbdd5cde3564e57841267757e58) Fix golint issue caused by typo ([#​1372](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1372)) [`5a728db`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/5a728db2e9713b66615943129568834c5af86ff8) Another batch of cleanups in otlp exporter ([#​1357](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1357)) [`e081978`](https://redirect.github.com/open-telemetry/opentelemetry-go/commit/e0819780f9d4ea1e8169109cd71b848fe08f788c) Move opencensus example to the example directory ([#​1359](https://redirect.github.com/open-telemetry/opentelemetry-go/issues/1359)) </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. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4zMi4yIiwidXBkYXRlZEluVmVyIjoiNDIuMzIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
6ce14298b9 |
Release v1.39.0 (#7676)
## Overview ### Added - Greatly reduce the cost of recording metrics in `go.opentelemetry.io/otel/sdk/metric` using hashing for map keys. (#7175) - Add `WithInstrumentationAttributeSet` option to `go.opentelemetry.io/otel/log`, `go.opentelemetry.io/otel/metric`, and `go.opentelemetry.io/otel/trace` packages. This provides a concurrent-safe and performant alternative to `WithInstrumentationAttributes` by accepting a pre-constructed `attribute.Set`. (#7287) - Add experimental observability for the Prometheus exporter in `go.opentelemetry.io/otel/exporters/prometheus`. Check the `go.opentelemetry.io/otel/exporters/prometheus/internal/x` package documentation for more information. (#7345) - Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. (#7353) - Add temporality selector functions `DeltaTemporalitySelector`, `CumulativeTemporalitySelector`, `LowMemoryTemporalitySelector` to `go.opentelemetry.io/otel/sdk/metric`. (#7434) - Add experimental observability metrics for simple log processor in `go.opentelemetry.io/otel/sdk/log`. (#7548) - Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`. (#7459) - Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#7486) - Add experimental observability metrics for simple span processor in `go.opentelemetry.io/otel/sdk/trace`. (#7374) - Add experimental observability metrics in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#7512) - Add experimental observability metrics for manual reader in `go.opentelemetry.io/otel/sdk/metric`. (#7524) - Add experimental observability metrics for periodic reader in `go.opentelemetry.io/otel/sdk/metric`. (#7571) - Support `OTEL_EXPORTER_OTLP_LOGS_INSECURE` and `OTEL_EXPORTER_OTLP_INSECURE` environmental variables in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#7608) - Add `Enabled` method to the `Processor` interface in `go.opentelemetry.io/otel/sdk/log`. All `Processor` implementations now include an `Enabled` method. (#7639) - The `go.opentelemetry.io/otel/semconv/v1.38.0` package. The package contains semantic conventions from the `v1.38.0` version of the OpenTelemetry Semantic Conventions. See the [migration documentation](./semconv/v1.38.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.37.0.`(#7648) ### Changed - `Distinct` in `go.opentelemetry.io/otel/attribute` is no longer guaranteed to uniquely identify an attribute set. Collisions between `Distinct` values for different Sets are possible with extremely high cardinality (billions of series per instrument), but are highly unlikely. (#7175) - `WithInstrumentationAttributes` in `go.opentelemetry.io/otel/trace` synchronously de-duplicates the passed attributes instead of delegating it to the returned `TracerOption`. (#7266) - `WithInstrumentationAttributes` in `go.opentelemetry.io/otel/meter` synchronously de-duplicates the passed attributes instead of delegating it to the returned `MeterOption`. (#7266) - `WithInstrumentationAttributes` in `go.opentelemetry.io/otel/log` synchronously de-duplicates the passed attributes instead of delegating it to the returned `LoggerOption`. (#7266) - Rename the `OTEL_GO_X_SELF_OBSERVABILITY` environment variable to `OTEL_GO_X_OBSERVABILITY` in `go.opentelemetry.io/otel/sdk/trace`, `go.opentelemetry.io/otel/sdk/log`, and `go.opentelemetry.io/otel/exporters/stdout/stdouttrace`. (#7302) - Improve performance of histogram `Record` in `go.opentelemetry.io/otel/sdk/metric` when min and max are disabled using `NoMinMax`. (#7306) - Improve error handling for dropped data during translation by using `prometheus.NewInvalidMetric` in `go.opentelemetry.io/otel/exporters/prometheus`. ⚠️ **Breaking Change:** Previously, these cases were only logged and scrapes succeeded. Now, when translation would drop data (e.g., invalid label/value), the exporter emits a `NewInvalidMetric`, and Prometheus scrapes **fail with HTTP 500** by default. To preserve the prior behavior (scrapes succeed while errors are logged), configure your Prometheus HTTP handler with: `promhttp.HandlerOpts{ ErrorHandling: promhttp.ContinueOnError }`. (#7363) - Replace fnv hash with xxhash in `go.opentelemetry.io/otel/attribute` for better performance. (#7371) - The default `TranslationStrategy` in `go.opentelemetry.io/exporters/prometheus` is changed from `otlptranslator.NoUTF8EscapingWithSuffixes` to `otlptranslator.UnderscoreEscapingWithSuffixes`. (#7421) - Improve performance of concurrent measurements in `go.opentelemetry.io/otel/sdk/metric`. (#7427) - Include W3C TraceFlags (bits 0–7) in the OTLP `Span.Flags` field in `go.opentelemetry.io/exporters/otlp/otlptrace/otlptracehttp` and `go.opentelemetry.io/exporters/otlp/otlptrace/otlptracegrpc`. (#7438) - The `ErrorType` function in `go.opentelemetry.io/otel/semconv/v1.37.0` now handles custom error types. If an error implements an `ErrorType() string` method, the return value of that method will be used as the error type. (#7442) ### Fixed - Fix `WithInstrumentationAttributes` options in `go.opentelemetry.io/otel/trace`, `go.opentelemetry.io/otel/metric`, and `go.opentelemetry.io/otel/log` to properly merge attributes when passed multiple times instead of replacing them. Attributes with duplicate keys will use the last value passed. (#7300) - The equality of `attribute.Set` when using the `Equal` method is not affected by the user overriding the empty set pointed to by `attribute.EmptySet` in `go.opentelemetry.io/otel/attribute`. (#7357) - Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. (#7372) - Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#7372) - Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`. (#7372) - Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`. (#7372) - Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`. (#7372) - Return partial OTLP export errors to the caller in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`. (#7372) - Fix `AddAttributes`, `SetAttributes`, `SetBody` on `Record` in `go.opentelemetry.io/otel/sdk/log` to not mutate input. (#7403) - Do not double record measurements of `RecordSet` methods in `go.opentelemetry.io/otel/semconv/v1.37.0`. (#7655) - Do not double record measurements of `RecordSet` methods in `go.opentelemetry.io/otel/semconv/v1.36.0`. (#7656) ### Removed - Drop support for [Go 1.23]. (#7274) - Remove the `FilterProcessor` interface in `go.opentelemetry.io/otel/sdk/log`. The `Enabled` method has been added to the `Processor` interface instead. All `Processor` implementations must now implement the `Enabled` method. Custom processors that do not filter records can implement `Enabled` to return `true`. (#7639) |
||
|
|
12e421a706 |
sdk/log: move Enabled method from FilterProcessor to Processor (#7639)
Fixes #7617 Simplify the Logs SDK by unifying processor capabilities into a single interface. - Add `Enabled(ctx context.Context, p EnabledParameters) bool` to `sdk/log.Processor`. - Remove `sdk/log.FilterProcessor` interface. `Processor` implementations must now implement the `Enabled` method. Custom processors that do not filter records can implement `Enabled` to return `true`. |
||
|
|
5982f16d24 |
fix(deps): update module golang.org/x/sys to v0.39.0 (#7684)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | golang.org/x/sys | `v0.38.0` -> `v0.39.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### 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. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4zMi4yIiwidXBkYXRlZEluVmVyIjoiNDIuMzIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiU2tpcCBDaGFuZ2Vsb2ciLCJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: dmathieu <42@dmathieu.com> |
||
|
|
ca53078985 |
Instrument the SimpleLogProcessor from sdk/log (#7548)
ref #7016 ```txt goarch: amd64 pkg: go.opentelemetry.io/otel/sdk/log cpu: Intel(R) Core(TM) i7-14700 │ before.txt │ .\after_res.txt │ │ sec/op │ sec/op vs base │ SimpleProcessorObservability/NoObservability-28 27.68n ± 4% SimpleProcessorObservability/Observability-28 27.39n ± 5% geomean 27.68n 27.38n ? ¹ ² ¹ benchmark set differs from baseline; geomeans may not be comparable ² ratios must be >0 to compute geomean │ before.txt │ .\after_res.txt │ │ B/op │ B/op vs base │ SimpleProcessorObservability/NoObservability-28 0.000 ± 0% SimpleProcessorObservability/Observability-28 0.000 ± 0% geomean ¹ ? ² ¹ ³ ¹ summaries must be >0 to compute geomean ² benchmark set differs from baseline; geomeans may not be comparable ³ ratios must be >0 to compute geomean │ before.txt │ .\after_res.txt │ │ allocs/op │ allocs/op vs base │ SimpleProcessorObservability/NoObservability-28 0.000 ± 0% SimpleProcessorObservability/Observability-28 0.000 ± 0% geomean ¹ ? ² ¹ ³ ¹ summaries must be >0 to compute geomean ² benchmark set differs from baseline; geomeans may not be comparable ³ ratios must be >0 to compute geomean ``` --------- Co-authored-by: Flc゛ <i@flc.io> Co-authored-by: Cijo Thomas <cithomas@microsoft.com> Co-authored-by: Robert Pająk <pellared@hotmail.com> Co-authored-by: dmathieu <42@dmathieu.com> |
||
|
|
49292857b7 |
Replace fnv with xxhash (#7497)
**Objective**: - Performance comparison between fnv and xxhash in terms of ops/sec, allocations and collisions - Implement xxhash according to first objective **Changes**: - fnv is replaced by xxhash. Perform stats: - **Collision**: No collision upto 100M - **Allocations**: Same in both cases - **Ops/sec**: xxhash performed better in cases with medium to large strings **Benchmarks**: ``` benchstat old.txt new.txt goos: darwin goarch: arm64 pkg: go.opentelemetry.io/otel/attribute cpu: Apple M2 │ old.txt │ new.txt │ │ sec/op │ sec/op vs base │ NewSet-8 205.5n ± 1% 229.4n ± 1% +11.61% (p=0.002 n=6) NewSetSmallStrings-8 160.5n ± 1% 169.0n ± 5% +5.26% (p=0.002 n=6) NewSetMediumStrings-8 263.8n ± 6% 185.0n ± 1% -29.89% (p=0.002 n=6) NewSetLargeStrings-8 426.4n ± 9% 210.2n ± 1% -50.72% (p=0.002 n=6) NewSetVeryLargeStrings-8 1012.5n ± 7% 238.7n ± 2% -76.43% (p=0.002 n=6) NewSetHugeStrings-8 3622.0n ± 8% 397.1n ± 1% -89.04% (p=0.002 n=6) geomean 488.6n 228.6n -53.21% │ old.txt │ new.txt │ │ B/op │ B/op vs base │ NewSet-8 448.0 ± 0% 448.0 ± 0% ~ (p=1.000 n=6) ¹ NewSetSmallStrings-8 320.0 ± 0% 320.0 ± 0% ~ (p=1.000 n=6) ¹ NewSetMediumStrings-8 320.0 ± 0% 320.0 ± 0% ~ (p=1.000 n=6) ¹ NewSetLargeStrings-8 320.0 ± 0% 320.0 ± 0% ~ (p=1.000 n=6) ¹ NewSetVeryLargeStrings-8 320.0 ± 0% 320.0 ± 0% ~ (p=1.000 n=6) ¹ NewSetHugeStrings-8 320.0 ± 0% 320.0 ± 0% ~ (p=1.000 n=6) ¹ geomean 338.5 338.5 +0.00% ¹ all samples are equal │ old.txt │ new.txt │ │ allocs/op │ allocs/op vs base │ NewSet-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=6) ¹ NewSetSmallStrings-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=6) ¹ NewSetMediumStrings-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=6) ¹ NewSetLargeStrings-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=6) ¹ NewSetVeryLargeStrings-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=6) ¹ NewSetHugeStrings-8 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=6) ¹ geomean 1.000 1.000 +0.00% ¹ all samples are equal ``` Previous implementation for reference: https://github.com/open-telemetry/opentelemetry-go/blame/d0483a7c89d936dcced557fb523465daeac16967/CHANGELOG.md#L16 --------- Co-authored-by: Robert Pająk <pellared@hotmail.com> |
||
|
|
d1ebd7b9ff |
fix(deps): update golang.org/x (#7590)
This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | golang.org/x/sync | `v0.17.0` -> `v0.18.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | golang.org/x/sys | `v0.37.0` -> `v0.38.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### 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 is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- 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-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTkuNCIsInVwZGF0ZWRJblZlciI6IjQxLjE1OS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJTa2lwIENoYW5nZWxvZyIsImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
fe47da3017 |
sdk/log: update ExampleProcessor_eventName to use otel.event.name attribute (#7568)
Per https://github.com/open-telemetry/semantic-conventions/issues/2913 and https://github.com/open-telemetry/semantic-conventions/pull/2914 Related semconv PR: - https://github.com/open-telemetry/semantic-conventions/pull/3034 |
||
|
|
a80ee2de89 |
feat: instrument periodic reader from sdk/metric (#7571)
Resolve: #7010 ### Benchmarks ``` ➜ benchstat /tmp/bench_disabled.txt /tmp/bench_enabled.txt goos: darwin goarch: arm64 pkg: go.opentelemetry.io/otel/sdk/metric cpu: Apple M1 Max │ /tmp/bench_disabled.txt │ /tmp/bench_enabled.txt │ │ sec/op │ sec/op vs base │ PeriodicReaderInstrumentation/NoObservability-10 17.00µ ± 0% 17.02µ ± 0% ~ (p=0.400 n=50) PeriodicReaderInstrumentation/Observability-10 17.48µ ± 0% 17.47µ ± 0% ~ (p=0.361 n=50) geomean 17.24µ 17.24µ +0.04% │ /tmp/bench_disabled.txt │ /tmp/bench_enabled.txt │ │ B/op │ B/op vs base │ PeriodicReaderInstrumentation/NoObservability-10 47.63Ki ± 0% 47.63Ki ± 0% ~ (p=0.159 n=50) PeriodicReaderInstrumentation/Observability-10 47.65Ki ± 0% 47.65Ki ± 0% ~ (p=0.780 n=50) geomean 47.64Ki 47.64Ki +0.00% │ /tmp/bench_disabled.txt │ /tmp/bench_enabled.txt │ │ allocs/op │ allocs/op vs base │ PeriodicReaderInstrumentation/NoObservability-10 376.0 ± 0% 376.0 ± 0% ~ (p=1.000 n=50) ¹ PeriodicReaderInstrumentation/Observability-10 376.0 ± 0% 376.0 ± 0% ~ (p=1.000 n=50) ¹ geomean 376.0 376.0 +0.00% ¹ all samples are equal ``` --------- Co-authored-by: Damien Mathieu <42@dmathieu.com> |