Skip to content
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

Fix incorrect metrics getting generated from multiple readers #5900

Conversation

pree-dew
Copy link
Contributor

@pree-dew pree-dew commented Oct 19, 2024

Will fix #5866

@dmathieu dmathieu marked this pull request as draft October 19, 2024 11:15
@dashpole dashpole added this to the v1.32.0 milestone Oct 21, 2024
@dashpole dashpole added bug Something isn't working area:metrics Part of OpenTelemetry Metrics labels Oct 21, 2024
@dashpole dashpole self-assigned this Oct 21, 2024
Copy link
Contributor

@dashpole dashpole left a comment

Choose a reason for hiding this comment

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

looking great overall.

sdk/metric/meter.go Outdated Show resolved Hide resolved
sdk/metric/pipeline.go Outdated Show resolved Hide resolved
sdk/metric/meter.go Show resolved Hide resolved
sdk/metric/meter.go Show resolved Hide resolved
…trument for each pipeline. 3. remove the registercallback function
Copy link

codecov bot commented Nov 1, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 84.6%. Comparing base (d2b0663) to head (536497b).
Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@          Coverage Diff          @@
##            main   #5900   +/-   ##
=====================================
  Coverage   84.6%   84.6%           
=====================================
  Files        272     272           
  Lines      22857   22890   +33     
=====================================
+ Hits       19350   19380   +30     
- Misses      3163    3166    +3     
  Partials     344     344           

see 5 files with indirect coverage changes

sdk/metric/meter.go Outdated Show resolved Hide resolved
sdk/metric/meter.go Show resolved Hide resolved
sdk/metric/pipeline.go Outdated Show resolved Hide resolved
…test case to check concurrency on read and write of observer. 3. Remove the check of adding measure as it will get response from cache.
@dashpole
Copy link
Contributor

dashpole commented Nov 1, 2024

Looks like this just needs a changelog, and then reviews from others!

@pree-dew
Copy link
Contributor Author

pree-dew commented Nov 1, 2024

@dashpole added changlog entry. I really appreciate all the help and feedback provided by you. :)

CHANGELOG.md Outdated Show resolved Hide resolved
@dashpole
Copy link
Contributor

dashpole commented Nov 1, 2024

Feel free to mark this ready for review once you are happy with it

@pree-dew pree-dew changed the title [WIP] Fix incorrect metrics getting generated from multiple readers Fix incorrect metrics getting generated from multiple readers Nov 1, 2024
@pree-dew pree-dew marked this pull request as ready for review November 1, 2024 18:20
Copy link
Contributor

@dashpole dashpole left a comment

Choose a reason for hiding this comment

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

Thanks!

sdk/metric/pipeline_test.go Outdated Show resolved Hide resolved
sdk/metric/pipeline_test.go Outdated Show resolved Hide resolved
sdk/metric/pipeline_test.go Outdated Show resolved Hide resolved
sdk/metric/pipeline_test.go Outdated Show resolved Hide resolved
@pellared
Copy link
Member

pellared commented Nov 7, 2024

@pree-dew, can you please take a look at #5900 (comment)? Not a blocker, but we may want to have follow-up actions.

@pellared pellared added the pkg:SDK Related to an SDK package label Nov 7, 2024
@pellared
Copy link
Member

pellared commented Nov 8, 2024

@pree-dew, thanks 🥇

@pellared pellared merged commit 1492efa into open-telemetry:main Nov 8, 2024
31 checks passed
@pree-dew
Copy link
Contributor Author

pree-dew commented Nov 8, 2024

Happy to help @pellared , waiting to learn from all of you!

pellared added a commit that referenced this pull request Nov 8, 2024
### Added

- Add `go.opentelemetry.io/otel/sdk/metric/exemplar.AlwaysOffFilter`,
which can be used to disable exemplar recording. (#5850)
- Add `go.opentelemetry.io/otel/sdk/metric.WithExemplarFilter`, which
can be used to configure the exemplar filter used by the metrics SDK.
(#5850)
- Add `ExemplarReservoirProviderSelector` and
`DefaultExemplarReservoirProviderSelector` to
`go.opentelemetry.io/otel/sdk/metric`, which defines the exemplar
reservoir to use based on the aggregation of the metric. (#5861)
- Add `ExemplarReservoirProviderSelector` to
`go.opentelemetry.io/otel/sdk/metric.Stream` to allow using views to
configure the exemplar reservoir to use for a metric. (#5861)
- Add `ReservoirProvider`, `HistogramReservoirProvider` and
`FixedSizeReservoirProvider` to
`go.opentelemetry.io/otel/sdk/metric/exemplar` to make it convenient to
use providers of Reservoirs. (#5861)
- The `go.opentelemetry.io/otel/semconv/v1.27.0` package.
The package contains semantic conventions from the `v1.27.0` version of
the OpenTelemetry Semantic Conventions. (#5894)
- Add `Attributes attribute.Set` field to `Scope` in
`go.opentelemetry.io/otel/sdk/instrumentation`. (#5903)
- Add `Attributes attribute.Set` field to `ScopeRecords` in
`go.opentelemetry.io/otel/log/logtest`. (#5927)
- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` adds
instrumentation scope attributes. (#5934)
- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp` adds
instrumentation scope attributes. (#5934)
- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`
adds instrumentation scope attributes. (#5935)
- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`
adds instrumentation scope attributes. (#5935)
- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` adds
instrumentation scope attributes. (#5933)
- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` adds
instrumentation scope attributes. (#5933)
- `go.opentelemetry.io/otel/exporters/prometheus` adds instrumentation
scope attributes in `otel_scope_info` metric as labels. (#5932)

### Changed

- Support scope attributes and make them as identifying for `Tracer` in
`go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/trace`.
(#5924)
- Support scope attributes and make them as identifying for `Meter` in
`go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/metric`.
(#5926)
- Support scope attributes and make them as identifying for `Logger` in
`go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/log`.
(#5925)
- Make schema URL and scope attributes as identifying for `Tracer` in
`go.opentelemetry.io/otel/bridge/opentracing`. (#5931)
- Clear unneeded slice elements to allow GC to collect the objects in
`go.opentelemetry.io/otel/sdk/metric` and
`go.opentelemetry.io/otel/sdk/trace`. (#5804)

### Fixed

- Global MeterProvider registration unwraps global instrument Observers,
the undocumented Unwrap() methods are now private. (#5881)
- `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`
now keeps the metadata already present in the context when `WithHeaders`
is used. (#5892)
- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` now
keeps the metadata already present in the context when `WithHeaders` is
used. (#5911)
- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` now
keeps the metadata already present in the context when `WithHeaders` is
used. (#5915)
- Fix `go.opentelemetry.io/otel/exporters/prometheus` trying to add
exemplars to Gauge metrics, which is unsupported. (#5912)
- Fix `WithEndpointURL` to always use a secure connection when an https
URL is passed in
`go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`.
(#5944)
- Fix `WithEndpointURL` to always use a secure connection when an https
URL is passed in
`go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`.
(#5944)
- Fix `WithEndpointURL` to always use a secure connection when an https
URL is passed in
`go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`.
(#5944)
- Fix `WithEndpointURL` to always use a secure connection when an https
URL is passed in
`go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`.
(#5944)
- Fix incorrect metrics generated from callbacks when multiple readers
are used in `go.opentelemetry.io/otel/sdk/metric`. (#5900)

### Removed

- Remove all examples under `go.opentelemetry.io/otel/example` as they
are moved to [Contrib
repository](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/examples).
(#5930)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:metrics Part of OpenTelemetry Metrics bug Something isn't working pkg:SDK Related to an SDK package
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Multiple periodic readers increment the counter abnormaly
5 participants