Skip to content

fix(otel): upgrade OpenTelemetry and review retry defaults - #162

Open
bruno-espino wants to merge 2 commits into
pydantic:mainfrom
bruno-espino:bruno/logfire-otel-http-errors-pr-20261105
Open

bruno-espino wants to merge 2 commits into
pydantic:mainfrom
bruno-espino:bruno/logfire-otel-http-errors-pr-20261105

Conversation

@bruno-espino

Copy link
Copy Markdown
Member

Upgrade OpenTelemetry to 0.33.1 and prepare Logfire 0.14.0 so returned HTTP export errors retain status codes. Closes #161.

This patch currently disables 0.33's new default of up to three retries for network failures and HTTP 429, 502, 503, and 504.

Retries can recover batches after temporary refusals, as recommended by the OTLP specification. Retrying an unacknowledged batch can also duplicate delta metrics. The exposed RetryPolicy has no per-error switch.

Should we:

  1. Keep single-attempt exports or adopt the upstream default?
  2. Expose a retry option?

This keeps 0.13.1's default behavior. Callers that enabled experimental-http-retry change from up to four attempts to one, with no Logfire override.

Public OpenTelemetry types change, and HTTP bodies over 64 MiB are rejected. Tracing integrations and the Axum example are updated.

Verified with Linux workspace tests, focused macOS regressions, feature checks, lints, and docs.

Reproduce lost status codes for HTTP collector refusals and require one request per export.
Upgrade OpenTelemetry to 0.33.1 and prepare Logfire 0.14.0 so returned HTTP export errors retain status codes. Closes pydantic#161.

This patch currently disables 0.33's new default of up to three retries for network failures and HTTP 429, 502, 503, and 504.

Retries can recover batches after temporary refusals, as recommended by the [OTLP specification](https://opentelemetry.io/docs/specs/otlp/#retryable-response-codes). Retrying an unacknowledged batch can also duplicate delta metrics. The exposed `RetryPolicy` has no per-error switch.

Should we:

1. Keep single-attempt exports or adopt the upstream default?
2. Expose a retry option?

This keeps 0.13.1's default behavior. Callers that enabled `experimental-http-retry` change from up to four attempts to one, with no Logfire override.

Public OpenTelemetry types change, and HTTP bodies over 64 MiB are rejected. Tracing integrations and the Axum example are updated.

Verified with Linux workspace tests, focused macOS regressions, feature checks, lints, and docs.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

This branch has not been deployed

No deployments
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.

Upgrade OpenTelemetry to preserve HTTP export errors

2 participants