Open
Conversation
reqwest 0.13 flipped the default TLS backend from native-tls to rustls and made `query` opt-in; we pin `native-tls`/`native-tls-vendored` explicitly to keep the previous behavior and enable `query` for the four call sites that use it (cloud-api, frontegg-client). The full rustls-with-aws-lc-rs migration is tracked separately in the crypto migration plan and is deliberately not in scope here. reqwest-middleware and reqwest-retry are bumped to the matching 0.5 / 0.9 lines. Two workarounds for code that can't use the new reqwest version yet: - `src/persist/src/azure.rs`: the custom `TransportOptions` plumbing passed a `reqwest::Client` to azure_core 0.21's `HttpClient` trait, which is pinned to reqwest 0.12 internally. Drop the custom transport for now; `operation_timeout` still applies via the retry policy. The per-attempt/read/connect timeout plumbing will be restored by the separate azure_sdk 0.35 migration. - `src/storage-types/src/connections.rs`: the `AwsCredentialLoad` trait comes from reqsign 0.16 (via our iceberg fork) and is defined against reqwest 0.12's `Client`. Add a versioned `reqwest_0_12` alias dep and use it for the single trait-impl parameter. Can be removed when the iceberg fork picks up a reqsign that supports reqwest 0.13. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- reqwest 0.13 changed its default features: `default-tls` now activates `rustls` (which is banned) and `system-proxy` is a new feature that was implicit in 0.12. Add `default-features = false` and list everything explicitly, including `system-proxy`. - Move the `reqwest_0_12` alias into `[workspace.dependencies]` — the Cargo lint forbids inlining versions in member crate manifests. - Allow the intentional duplicate reqwest 0.12 / 0.13 pair in `deny.toml`'s skip list. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One of several sequenced PRs in the crypto migration toward rustls + aws-lc-rs for everything (tracked in `doc/developer/crypto-migration-plan.md`). Specifically:
native-tlsbackend for now to scope the change to just the version bump. Does not flip the TLS backend.native-tlsforrustlswithaws-lc-rsacross all reqwest consumers. That's where the real TLS backend change happens.azure_core0.35 series, which defaults toreqwest_rustls+ aws-lc-rs on its own; that's a concrete step forward on the Azure path even before the workspace-wide flip.Summary
reqwest0.12.28 → 0.13.2,reqwest-middleware0.4.2 → 0.5.1,reqwest-retry0.8.0 → 0.9.1.default-features = falseon reqwest so the 0.13 default changes (nowdefault-tls = rustls, newsystem-proxyfeature) don't ambush us mid-bump.native-tls/native-tls-vendoredfor now) plus the two newly-opt-in features we need:query(used bycloud-apiandfrontegg-client) andsystem-proxy(was implicit in 0.12).The
native-tlspin here is a temporary consequence of keeping this PR scoped to the bump — the crypto migration's HTTP-clients PR is where the switch to rustls actually lands.Known workarounds for incompatible call sites
Two places still need reqwest 0.12 because their trait ecosystem is pinned there. Both are narrow and clearly labeled; both go away as the related migrations land.
src/persist/src/azure.rs— Azurite test path only. The old code plumbed a customreqwest::ClientthroughTransportOptionsinside theif account == EMULATOR_ACCOUNTbranch to apply shortBlobKnobsper-attempt / read / connect timeouts (5s–10s) to the Azurite test client.azure_core0.21 pins reqwest 0.12 internally, so our 0.13Clientno longer implements itsHttpClienttrait.elsebranch (real Azure Blob Storage) never set a custom transport — it usesBlobServiceClient::new(...)which gets the SDK's default reqwest client. That behavior is unchanged.knobs.operation_timeout()is preserved via the retry policy'smax_total_elapsedin both branches.src/storage-types/src/connections.rs—AwsCredentialLoadimpl. Thereqsign::AwsCredentialLoadtrait (re-exported from iceberg) is defined against reqwest 0.12. Added a versionedreqwest_0_12alias dep in[workspace.dependencies]and use it only for the single trait-impl parameter. Removable once iceberg upstream bumps to a reqsign that supports reqwest 0.13 — tracked as a multi-hop ecosystem blocker (reqsign 0.17 was a breaking API rewrite; neither iceberg nor opendal have migrated).Cargo.lock
~27 new packages (quinn for HTTP/3, rustls-platform-verifier, wasm-streams, newer windows-sys). Both reqwest 0.12 and 0.13 coexist in the tree — the 0.12 copy comes in via azure_core 0.21 and reqsign 0.16 and is needed only for the two workarounds above. Exempted in
deny.toml's skip list.Test plan
cargo check --workspace --all-targets— cleancargo --locked deny check bans sources—bans okbin/lint-cargo— exit 0cargo testrun / CI greenccsr,frontegg-client, or similar) against a real endpoint to confirm native-tls still works at 0.13 before the crypto migration's rustls switch lands🤖 Generated with Claude Code