Fix package documentation name and return error in semconv/v1.36.0#7656
Merged
MrAlias merged 9 commits intoopen-telemetry:mainfrom Dec 5, 2025
Merged
Fix package documentation name and return error in semconv/v1.36.0#7656MrAlias merged 9 commits intoopen-telemetry:mainfrom
semconv/v1.36.0#7656MrAlias merged 9 commits intoopen-telemetry:mainfrom
Conversation
3aeeaf7 to
a4cc975
Compare
dashpole
approved these changes
Dec 3, 2025
XSAM
approved these changes
Dec 3, 2025
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes two issues identified in the semconv/v1.36.0 package during the review of PR #7648:
- Corrects incorrect package documentation that referenced "httpconv" instead of the actual package name across 18 metric.go files
- Adds missing
returnstatements inRecordSetmethods to prevent double recording of measurements when the attribute set is empty
Key Changes
- Fixed package documentation comments in 18 semconv packages (azureconv, cicdconv, containerconv, dbconv, dnsconv, faasconv, genaiconv, goconv, httpconv, hwconv, k8sconv, messagingconv, otelconv, processconv, rpcconv, signalrconv, systemconv, vcsconv)
- Added 72 missing
returnstatements across allRecordSetmethods in these packages to prevent measurements from being recorded twice - Updated CHANGELOG.md to document the fix
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| semconv/v1.36.0/azureconv/metric.go | Fixed package doc from "httpconv" to "azureconv"; added return in CosmosDBClientOperationRequestCharge.RecordSet |
| semconv/v1.36.0/cicdconv/metric.go | Fixed package doc from "httpconv" to "cicdconv"; added return in PipelineRunDuration.RecordSet |
| semconv/v1.36.0/containerconv/metric.go | Fixed package doc from "httpconv" to "containerconv"; added returns in CPUUsage and Uptime RecordSet methods |
| semconv/v1.36.0/dbconv/metric.go | Fixed package doc from "httpconv" to "dbconv"; added returns in 5 RecordSet methods (connection create/use/wait time, operation duration, response rows) |
| semconv/v1.36.0/dnsconv/metric.go | Fixed package doc from "httpconv" to "dnsconv"; added return in LookupDuration.RecordSet |
| semconv/v1.36.0/faasconv/metric.go | Fixed package doc from "httpconv" to "faasconv"; added returns in 5 RecordSet methods (CPU, init, invoke duration, memory, network IO) |
| semconv/v1.36.0/genaiconv/metric.go | Fixed package doc from "httpconv" to "genaiconv"; added returns in 5 RecordSet methods (operation duration, token usage, request duration, time per token, time to first token) |
| semconv/v1.36.0/goconv/metric.go | Fixed package doc from "httpconv" to "goconv"; added return in ScheduleDuration.RecordSet |
| semconv/v1.36.0/httpconv/metric.go | Added returns in 7 RecordSet methods (client connection/request/response, server request/response) |
| semconv/v1.36.0/hwconv/metric.go | Fixed package doc from "httpconv" to "hwconv"; added returns in 4 RecordSet methods (ambient temp, heating margin, host power, power) |
| semconv/v1.36.0/k8sconv/metric.go | Fixed package doc from "httpconv" to "k8sconv"; added returns in 10 RecordSet methods (HPA metrics, node/pod CPU/memory/uptime) |
| semconv/v1.36.0/messagingconv/metric.go | Fixed package doc from "httpconv" to "messagingconv"; added returns in 2 RecordSet methods (client operation, process duration) |
| semconv/v1.36.0/otelconv/metric.go | Fixed package doc from "httpconv" to "otelconv"; added returns in 2 RecordSet methods (SDK exporter operation, metric reader collection duration) |
| semconv/v1.36.0/processconv/metric.go | Fixed package doc from "httpconv" to "processconv"; added returns in 2 RecordSet methods (CPU utilization, uptime) |
| semconv/v1.36.0/rpcconv/metric.go | Fixed package doc from "httpconv" to "rpcconv"; added returns in 10 RecordSet methods (client/server duration, request/response sizes and counts) |
| semconv/v1.36.0/signalrconv/metric.go | Fixed package doc from "httpconv" to "signalrconv"; added return in ServerConnectionDuration.RecordSet |
| semconv/v1.36.0/systemconv/metric.go | Fixed package doc from "httpconv" to "systemconv"; added returns in 5 RecordSet methods (CPU frequency/utilization, filesystem utilization, paging utilization, uptime) |
| semconv/v1.36.0/vcsconv/metric.go | Fixed package doc from "httpconv" to "vcsconv"; added returns in 7 RecordSet methods (change duration/time to approval/merge, contributor count, ref lines/revisions delta, ref time) |
| CHANGELOG.md | Added entry documenting the fix for double recording in RecordSet methods |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
semconv/v1.36.0semconv/v1.36.0
dmathieu
approved these changes
Dec 4, 2025
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7656 +/- ##
=====================================
Coverage 86.1% 86.1%
=====================================
Files 298 298
Lines 21709 21709
=====================================
Hits 18706 18706
Misses 2626 2626
Partials 377 377 🚀 New features to boost your workflow:
|
Merged
MrAlias
added a commit
that referenced
this pull request
Dec 8, 2025
## 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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Identified in the review of #7648