This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch 58_maintenance
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/58_maintenance by this push:
     new adb77a16ad [58_maintenance] Fix MSRV CI check (pin tonic to 0.14.5, 
install cargo-msrv --locked) (#10365)
adb77a16ad is described below

commit adb77a16adff42fface41664dc2a3cb564f45fcf
Author: Matt Butrovich <[email protected]>
AuthorDate: Fri Jul 17 16:28:41 2026 -0400

    [58_maintenance] Fix MSRV CI check (pin tonic to 0.14.5, install cargo-msrv 
--locked) (#10365)
    
    # Which issue does this PR close?
    
    <!-- No dedicated issue for the CI break; file one if a tracker is
    wanted. -->
    
    - Part of #10349 (58.4.0 release effort).
    - Unblocks #10351, whose CI surfaced this pre-existing failure.
    - Prior art: #7290 (Fix MSRV CI Check), same class of fix.
    
    # Rationale for this change
    
    The `Verify MSRV` job on `58_maintenance` is failing on every PR
    (surfaced by #10351, whose own changes are parquet-only and unrelated).
    Two independent, pre-existing problems, both from dependency drift:
    
    1. **`cargo install cargo-msrv` fails to build.** Installed unlocked,
    cargo-msrv's transitive deps resolve to their newest versions; recent
    `aws-*` releases require rustc 1.94.1, newer than the CI container's
    rustc, so the install fails before `verify` runs.
    
    2. **`cargo msrv verify` fails on `arrow-flight`.** We commit no
    `Cargo.lock`, so `verify` resolves fresh each run and picks the newest
    deps. `tonic 0.14.6` now requires rustc 1.88, above our 1.85 MSRV.
    
    # What changes are included in this PR?
    
    Both changes are in `.github/workflows/rust.yml` (MSRV job only):
    
    - Install cargo-msrv with `--locked`, so its transitive deps resolve to
    versions that build on the CI container's rustc instead of the newest
    published ones.
    - Add a `Downgrade workspace dependencies` step that pins the tonic
    crates to 0.14.5 (the latest release supporting rustc 1.85) before
    `cargo msrv verify`, following the approach in #7290. The tonic crates
    are downgraded in matched pairs (`tonic`/`tonic-prost`, then
    `tonic-build`/`tonic-prost-build`) so their inter-crate `^` requirements
    stay satisfiable.
    
    No source, `Cargo.toml`, or declared-MSRV changes.
    
    # Are these changes tested?
    
    Yes, verified locally against a 1.85.1 toolchain with `cargo-msrv`
    0.19.3 (matching CI):
    
    - Without the pins: `cargo msrv verify` on `arrow-flight` reports
    `is_compatible: false` (`tonic 0.14.6` requires 1.88).
    - With the pins: the full CI `find` loop (`cargo msrv verify` over all
    29 packages) passes.
    
    # Are there any user-facing changes?
    
    No. CI-only change; no public API, code, or declared-MSRV changes.
    
    ---
    
    **Note for reviewers:** `main` has the same latent failure -- I ran
    `cargo msrv verify` on `main`'s HEAD and it fails identically on `tonic
    0.14.6`. Its CI is currently green only because of a cached registry
    index predating that release. The `--locked` fix is already on `main`;
    the tonic pin step is not. Suggest a follow-up applying the tonic pin
    step to `main` as well.
---
 .github/workflows/rust.yml | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index 77fccdbebc..8e73b2497b 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -118,7 +118,15 @@ jobs:
         uses: ./.github/actions/setup-builder
       - name: Install cargo-msrv (if needed)
         # cargo-msrv binary may be cached by the cargo cache step in 
setup-builder, and cargo install will error if it is already installed
-        run: if which cargo-msrv ; then echo "using existing cargo-msrv 
binary" ; else cargo install cargo-msrv ; fi
+        run: if which cargo-msrv ; then echo "using existing cargo-msrv 
binary" ; else cargo install cargo-msrv --locked ; fi
+      - name: Downgrade workspace dependencies
+        # Necessary because tonic 0.14.6 requires rust 1.88 or newer. We do 
not commit a Cargo.lock,
+        # so `cargo msrv verify` resolves fresh and would otherwise pick these 
newer versions. The
+        # tonic crates must be downgraded in matched pairs so their 
inter-crate requirements stay
+        # satisfiable. See https://github.com/apache/arrow-rs/issues/10349
+        run: |
+          cargo update -p tonic -p tonic-prost --precise 0.14.5
+          cargo update -p tonic-build -p tonic-prost-build --precise 0.14.5
       - name: Check all packages
         run: |
           # run `cargo msrv verify --manifest-path "path/to/Cargo.toml"` to 
see problematic dependencies

Reply via email to