Skip to content

build(deps): Strip vendored trust bundles and unused TLS deps from sentry_streams - #401

Merged
untitaker merged 3 commits into
mainfrom
build/drop-ureq-webpki-root-certs
Oct 22, 2026
Merged

untitaker merged 3 commits into
mainfrom
build/drop-ureq-webpki-root-certs

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Follow-up to INC-2600: trims what sentry_streams carries, and so what consumers of the wheel inherit, when CA bundles need updating.

Refs STREAM-1941

Companion to getsentry/taskbroker#829, which makes the same sentry/reqwest change in taskbroker. Rollout order: deploy taskbroker#829 first, then this one.

The published 0.0.69 manylinux wheel does not compile in a root bundle. There are no webpki-roots/webpki-root-certs crates and no CA certs in rust_streams.so. TLS goes through native-tls/OpenSSL and rustls-native-certs, so it uses the system store. The bundle only exists as a lockfile ghost, but Dependabot still bumps it (e.g. "bump webpki-root-certs from 1.0.7 to 1.0.10").

Rust

  • sentry: use the reqwest feature instead of transport. transport turns on sentry's native-tls feature, which includes ureq?/native-tls. Cargo then records an unused ureq and its webpki-root-certs in Cargo.lock, even though neither is ever built. Every other default sentry feature is kept.
  • reqwest: move from 0.12 (defaults) to 0.13 with only native-tls, http2 and charset. This matches the reqwest 0.13 that sentry already uses, so there is one reqwest instead of two, and sentry's transport still sends over native-tls. The GCS writer only uses Client, headers, StatusCode and text(), which are unchanged in 0.13.
  • Removed from all three lockfiles (the main crate, the rust_transforms example and rust_test_functions): ureq, ureq-proto, utf8-zero, der, pem-rfc7468, base64ct, webpki-root-certs, reqwest 0.12, system-configuration(-sys) and windows-registry. The main lockfile also drops the windows-* 0.53 target crates.

Python

  • Drop requests (runtime), plus responses and types-requests (dev). Nothing in the repo imports them. certifi stays in the tree because datadog and sentry-sdk depend on it, so wheel consumers still get it. Making that bundle a no-op is an image-level fix (SSL_CERT_FILE/REQUESTS_CA_BUNDLE), not something this package can do.
  • uv lock also synced the lockfile's own sentry-streams version from 0.0.68 to 0.0.69, matching pyproject.toml.

Draft until CI confirms the wheel build.

via markus.

--

View Junior Session [Sentry]

sentry-junior Bot and others added 3 commits October 22, 2026 14:11
sentry's transport feature enables native-tls, which includes ureq?/native-tls. Cargo then records an unused ureq and its webpki-root-certs bundle in the lockfile. Use sentry's reqwest feature and enable native-tls on reqwest 0.13 directly instead.

Co-Authored-By: Markus Unterwaditzer <markus@sentry.io>
Unifies with the reqwest 0.13 that sentry already uses, dropping the duplicate reqwest 0.12 stack and the separate TLS-only reqwest alias.

Co-Authored-By: Markus Unterwaditzer <markus@sentry.io>
Co-Authored-By: Markus Unterwaditzer <markus@sentry.io>
@linear-code

linear-code Bot commented Oct 22, 2026

Copy link
Copy Markdown

STREAM-1941

@untitaker
untitaker marked this pull request as ready for review October 22, 2026 16:05
@untitaker
untitaker requested a review from a team as a code owner October 22, 2026 16:05
@untitaker untitaker self-assigned this Oct 22, 2026
@untitaker
untitaker merged commit 82cff35 into main Oct 22, 2026
26 checks passed
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.

2 participants