Skip to content

Conversation

@MrAlias
Copy link
Contributor

@MrAlias MrAlias commented Dec 3, 2025

Identified in the review of #7648

@MrAlias MrAlias force-pushed the fix-semconv-v1.36.0 branch from 3aeeaf7 to a4cc975 Compare December 3, 2025 19:04
@MrAlias MrAlias marked this pull request as ready for review December 3, 2025 20:13
Copilot AI review requested due to automatic review settings December 3, 2025 20:13
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 return statements in RecordSet methods 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 return statements across all RecordSet methods 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.

@MrAlias MrAlias changed the title Fix package documentation naem and return error in semconv/v1.36.0 Fix package documentation name and return error in semconv/v1.36.0 Dec 3, 2025
@codecov
Copy link

codecov bot commented Dec 5, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.1%. Comparing base (be85ff8) to head (9eed58d).
⚠️ Report is 15 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@          Coverage Diff          @@
##            main   #7656   +/-   ##
=====================================
  Coverage   86.1%   86.1%           
=====================================
  Files        298     298           
  Lines      21709   21709           
=====================================
  Hits       18706   18706           
  Misses      2626    2626           
  Partials     377     377           

see 3 files with indirect coverage changes

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

@MrAlias MrAlias merged commit a64b9ec into open-telemetry:main Dec 5, 2025
31 of 32 checks passed
@MrAlias MrAlias deleted the fix-semconv-v1.36.0 branch December 5, 2025 16:18
@MrAlias MrAlias mentioned this pull request Dec 5, 2025
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)
@MrAlias MrAlias added this to the v1.39.0 milestone Dec 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants