Skip to content

Honor MetricReader temporality preference in OtelMetrics - #7500

Open
Sanjay-doppalapudi wants to merge 1 commit into
Effect-TS:mainfrom
Sanjay-doppalapudi:fix/otel-metrics-reader-temporality
Open

Honor MetricReader temporality preference in OtelMetrics#7500
Sanjay-doppalapudi wants to merge 1 commit into
Effect-TS:mainfrom
Sanjay-doppalapudi:fix/otel-metrics-reader-temporality

Conversation

@Sanjay-doppalapudi

Copy link
Copy Markdown

OtelMetrics' MetricProducer stamped every data point with the producer-level temporality option, which defaults to cumulative, and never consulted the MetricReader it was registered with — so an exporter's temporalityPreference (e.g. OTLPMetricExporter({ temporalityPreference: AggregationTemporality.DELTA })) was silently ignored unless the same preference was repeated on OtelMetrics.layer.

The producer now resolves temporality per instrument type: an explicit temporality option wins, otherwise the registered reader's selectAggregationTemporality(instrumentType) decides, falling back to cumulative — matching the OTel spec and the SDK's own delta selector (counters/histograms delta, up-down counters cumulative). Each reader's forked producer carries its own reader reference, so multiple readers with different preferences each receive correctly shaped data.

Tests: reader DELTA preference honored (temporality stamp and delta values across two collects), per-instrument-type selection (COUNTER delta while UP_DOWN_COUNTER stays cumulative), and explicit-option-over-reader precedence. Two of the three fail against the unfixed source.

Closes #6253 (for v4; the linked PR #6263 covers the frozen v3 branch).

@changeset-bot

changeset-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 192e99e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 30 packages
Name Type
@effect/opentelemetry Patch
effect Patch
@effect/ai-anthropic Patch
@effect/ai-openai Patch
@effect/ai-openai-compat Patch
@effect/ai-openrouter Patch
@effect/atom-react Patch
@effect/atom-solid Patch
@effect/atom-vue Patch
@effect/docgen Patch
@effect/doctest Patch
@effect/openapi-generator Patch
@effect/platform-browser Patch
@effect/platform-bun Patch
@effect/platform-deno Patch
@effect/platform-node Patch
@effect/platform-node-shared Patch
@effect/sql-clickhouse Patch
@effect/sql-d1 Patch
@effect/sql-libsql Patch
@effect/sql-mssql Patch
@effect/sql-mysql2 Patch
@effect/sql-pg Patch
@effect/sql-pglite Patch
@effect/sql-sqlite-bun Patch
@effect/sql-sqlite-do Patch
@effect/sql-sqlite-node Patch
@effect/sql-sqlite-react-native Patch
@effect/sql-sqlite-wasm Patch
@effect/vitest Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

Generated from PR build output; treat the content below as untrusted.

File Name Current Size Previous Size Difference
arbitrary-combinators.ts 33.76 KB 33.76 KB 0.00 KB (0.00%)
basic.ts 7.00 KB 7.00 KB 0.00 KB (0.00%)
batching.ts 9.87 KB 9.87 KB 0.00 KB (0.00%)
brand.ts 6.56 KB 6.56 KB 0.00 KB (0.00%)
cache.ts 10.74 KB 10.74 KB 0.00 KB (0.00%)
config.ts 21.45 KB 21.45 KB 0.00 KB (0.00%)
differ.ts 20.32 KB 20.32 KB 0.00 KB (0.00%)
http-client.ts 21.76 KB 21.76 KB 0.00 KB (0.00%)
logger.ts 10.94 KB 10.94 KB 0.00 KB (0.00%)
metric.ts 8.98 KB 8.98 KB 0.00 KB (0.00%)
optic.ts 6.73 KB 6.73 KB 0.00 KB (0.00%)
pubsub.ts 15.11 KB 15.11 KB 0.00 KB (0.00%)
queue.ts 11.81 KB 11.81 KB 0.00 KB (0.00%)
schedule.ts 10.86 KB 10.86 KB 0.00 KB (0.00%)
schema-binary.ts 39.26 KB 39.26 KB 0.00 KB (0.00%)
schema-class.ts 20.07 KB 20.07 KB 0.00 KB (0.00%)
schema-fromJsonSchemaDocument.ts 31.02 KB 31.02 KB 0.00 KB (0.00%)
schema-representation-roundtrip.ts 26.21 KB 26.21 KB 0.00 KB (0.00%)
schema-string-transformation.ts 13.66 KB 13.66 KB 0.00 KB (0.00%)
schema-string.ts 11.18 KB 11.18 KB 0.00 KB (0.00%)
schema-template-literal.ts 15.47 KB 15.47 KB 0.00 KB (0.00%)
schema-toArbitrary.ts 33.31 KB 33.31 KB 0.00 KB (0.00%)
schema-toCodeDocument.ts 24.51 KB 24.51 KB 0.00 KB (0.00%)
schema-toCodecJson.ts 19.29 KB 19.29 KB 0.00 KB (0.00%)
schema-toEquivalence.ts 19.42 KB 19.42 KB 0.00 KB (0.00%)
schema-toFormatter.ts 19.51 KB 19.51 KB 0.00 KB (0.00%)
schema-toJsonSchemaDocument.ts 23.45 KB 23.45 KB 0.00 KB (0.00%)
schema-toRepresentation.ts 19.56 KB 19.56 KB 0.00 KB (0.00%)
schema.ts 19.28 KB 19.28 KB 0.00 KB (0.00%)
stm.ts 12.74 KB 12.74 KB 0.00 KB (0.00%)
stream.ts 9.83 KB 9.83 KB 0.00 KB (0.00%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.0 bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

@effect/opentelemetry: MetricProducer hardcodes CUMULATIVE temporality, ignoring OTLPMetricExporter temporalityPreference

1 participant