-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Fix package documentation name and return error in semconv/v1.36.0
#7656
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
3aeeaf7 to
a4cc975
Compare
There was a problem hiding this 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
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
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:
|
## 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)
Identified in the review of #7648