Skip to content

Conversation

@abernix
Copy link
Member

@abernix abernix commented Nov 25, 2025

Summary

Pin several transitive dependencies to versions compatible with Rust 1.85.0 MSRV, preventing automatic upgrades that would require newer Rust versions.

Pinned dependencies

  • aws-config to 1.5.4 (prevents upgrade to 1.8+ which requires AWS SDK packages needing Rust 1.88)
  • aws-sdk-sso to 1.54.0 (MSRV 1.81.0)
  • aws-sdk-ssooidc to 1.55.0 (MSRV 1.81.0)
  • aws-sdk-sts to 1.55.0 (MSRV 1.81.0)
  • home to 0.5.9 (MSRV 1.70.0)
  • async-graphql / async-graphql-axum to 7.0.10 in fuzz subgraph (avoids 1.86.0 requirement from 7.0.15+)
  • async-graphql-derive, async-graphql-parser, async-graphql-value to 7.0.10 (transitive deps must match to avoid macro incompatibilities)
  • apollo-smith to 0.15.0 (0.15.2+ uses unstable feature unsigned_is_multiple_of requiring Rust 1.87+)

Additional changes

  • Removed deprecated as_slice() calls on GenericArray (deprecated in generic-array 0.14.x)
    • Replaced with hex::encode(digest.finalize()) where possible
    • Used explicit slice coercion &d[..] for other cases

Trade-offs

These pins will secure the default experience of using this as a library, but may just delay future upgrades, including a full MSRV upgrade. The AWS SDK versions are several releases behind latest (1.54-1.55 vs 1.92+), though they still provide comfortable headroom above our MSRV (requiring only 1.81).

We can selectively bump to mid-range versions (e.g., aws-sdk-sso 1.74.0) to narrow the gap while staying under any future MSRV increases, pending verification of functional compatibility.

Pin several transitive dependencies to versions compatible with Rust 1.85.0 MSRV, preventing automatic upgrades that would require newer Rust versions.

Pinned dependencies:
- aws-config to 1.5.4 (prevents upgrade to 1.8+ requiring Rust 1.88)
- aws-sdk-sso to 1.54.0 (MSRV 1.81.0)
- aws-sdk-ssooidc to 1.55.0 (MSRV 1.81.0)
- aws-sdk-sts to 1.55.0 (MSRV 1.81.0)
- home to 0.5.9 (MSRV 1.70.0)
- async-graphql/async-graphql-axum to 7.0.10 in fuzz subgraph (avoids 1.86+ requirement)

Trade-offs: These pins are several releases behind latest (AWS SDK 1.54-1.55 vs 1.92+), reducing our ability to move to the tip.  Work may become necessary to advance those.
Additional pins and fixes needed for test_updated CI job (which regenerates Cargo.lock):

- Pin async-graphql transitive dependencies (derive, parser, value) to 7.0.10
  to prevent cargo from resolving to incompatible newer versions
- Pin apollo-smith to 0.15.0 (0.15.2+ uses unstable feature unsigned_is_multiple_of requiring Rust 1.87+)
- Remove deprecated as_slice() calls on GenericArray (deprecated in generic-array 0.14.x)
  - Replace with hex::encode(digest.finalize()) where possible
  - Use explicit slice coercion &d[..] for other cases

These changes ensure the codebase builds successfully even when Cargo.lock is regenerated from scratch with only Cargo.toml constraints.
@abernix abernix requested review from a team as code owners November 25, 2025 09:44
@apollo-librarian
Copy link

apollo-librarian bot commented Nov 25, 2025

✅ Docs preview has no changes

The preview was not built because there were no changes.

Build ID: ae5fed1b75119f5f0524f22b
Build Logs: View logs

@abernix abernix marked this pull request as draft November 25, 2025 09:45
…aeger

Additional AWS ecosystem pins required to maintain tokio 1.38.2 — newer AWS Smithy crates (aws-smithy-types 1.3+, aws-smithy-runtime-api 1.9+) force tokio >=1.40.0, which triggers runtime panic in opentelemetry-jaeger 0.19.0 due to stricter blocking fd restrictions (tokio-rs/tokio#7172).

Pins applied:
- aws-smithy-types to 1.2.12 (newer 1.3.x requires tokio ^1.40.0)
- aws-smithy-runtime-api to 1.7.3 (1.9+ requires tokio ^1.40.0)
- aws-smithy-async to 1.2.4 (maintains aws-sdk-sso compatibility)
- async-compression to 0.4.11 (0.4.12+ requires tokio ^1.40.0)

Adds Renovate grouping rule for aws-smithy-* and aws-sdk-* packages (similar to existing tracing/otel grouping) to prevent independent upgrades that break tokio compatibility.

Resolves integration::lifecycle::test_reload_via_sighup failure discovered during testing.
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