[Downgrade CI] Resolver crashes on inactive Python_jll LibMPDec_jll compat
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Bắt đầu với julia-downgrade-compat/downgrade.jl và compatibility shim của Resolver quanh Registries.jl:224; tái hiện lỗi bằng lệnh Julia 1.10 đã được ghi lại. Sau đó chạy bin/test/runtests.jl và Pkg.test của Resolver; được xem là hoàn tất khi lệnh downgrade và các bài kiểm thử tương đương với workflow downstream đều đạt mà không bỏ qua coverage.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
The Downgrade workflow is red on clean master with:
KeyError: key "LibMPDec_jll" not found
...
Registries.jl:224
This is not caused by #498 or by a recent ArrayInterface source change. The same current action and registry fail on the last ArrayInterface commit whose historical workflow was green.
- Current clean-master failure:
d767284, run 30054476628, job 89363223986 - First clean-master failure: run 27407002673, job 80998509723, June 12
- Last green run: run 27149028395, job 80134716100, June 8, at
db587545
Reproduction
With Julia 1.10 and current v2 of julia-downgrade-compat:
git clone https://github.com/JuliaArrays/ArrayInterface.jl
git clone --branch v2 https://github.com/julia-actions/julia-downgrade-compat
cd ArrayInterface.jl
julia --startup-file=no ../julia-downgrade-compat/downgrade.jl \
"Pkg,TOML" "." "alldeps" "1" ""
The command fails deterministically with the LibMPDec_jll KeyError. It also fails after checking ArrayInterface out at db587545, so bisecting ArrayInterface source would be misleading.
External-action bisect
I bisected julia-actions/julia-downgrade-compat with the command above:
ac05e57de99d5cb35a381755d2054b57e8385c3b is the first bad commit
Handle old-style test dependencies (extras and targets.test) (#49)
That action change is desirable: it adds ArrayInterface's [extras]/[targets].test dependencies to the minimum-version solve. It exposes an existing Resolver/registry edge case; reverting it would reduce downgrade coverage rather than fix the cause.
Root cause
General's Python_jll metadata currently has:
# Compat.toml
["3-3.10"]
LibMPDec_jll = "2"
# Deps.toml
["3.10-3"]
LibMPDec_jll = "7106de7a-f406-5ef1-84f7-3345f7341bd2"
Thus Python 3.8 versions have a LibMPDec_jll compat entry but no active dependency with that name. Julia's Pkg tolerates this: on Julia 1.10, a project constrained to Python_jll = "~3.8" resolves to Python_jll v3.8.8+3 without LibMPDec_jll.
Resolver's compatibility shim for Julia <= 1.13 instead assumes every compat name occurs in the active per-version dependency map:
compat_uuid_pairs(c, name2uuid) =
(name2uuid[n] => spec for (n, spec) in c)
The unchecked name2uuid["LibMPDec_jll"] lookup is the crash.
Proper fix tested locally
I implemented a focused Resolver patch that:
- filters name-keyed compat entries with
haskey(name2uuid, name); - filters Julia 1.14's UUID-keyed representation against the active dependency UUIDs too;
- applies the same rule to strong and weak dependencies; and
- adds a regression test using
Python_jll3.8/3.10 plus a synthetic UUID-keyed check.
Observed verification:
- Before the patch, the new Resolver integration test reproduced the exact
KeyError. - After the patch,
bin/test/runtests.jlpassed 11/11 on Julia 1.10. - Resolver's full
Pkg.test()passed on Julia 1.10 and Julia 1.12. - ArrayInterface's exact downgrade command completed with the patched Resolver.
- The subsequent workflow-equivalent
Pkg.build(verbose=true)completed. - The exact
GROUP=Core,allow_reresolve=falsePkg.testinvocation passed all downstream testsets (336 assertions).
No ArrayInterface test or downgrade dependency was skipped, weakened, or suppressed.
The proper follow-up is an upstream Resolver patch. This issue records the clean-master failure and fully tested fix while that upstream contribution is coordinated.
- Ngôn ngữ chính
- Julia
- Star
- 140
- Fork
- 45
- Merge trung bình
- 1 phút
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của JuliaArrays/ArrayInterface.jl
-
lu_instance/qr_instance run a full factorization for FixedSizeArraysCó thể đã có người làm @devmotion đã nhận 5 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
JuliaArrays/ArrayInterface.jl#510 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
JuliaArrays/ArrayInterface.jl#463 · 5 bình luận · 4 reaction ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
JuliaArrays/ArrayInterface.jl#460 · 8 bình luận · 2 reaction ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
JuliaArrays/ArrayInterface.jl#397 · 1 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 15/100
JuliaArrays/ArrayInterface.jl#396 ·
Tất cả issue của JuliaArrays/ArrayInterface.jl
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
SciML/SciMLSensitivity.jl#1703 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Document that `nullspace` returns orthonormalized vectorsCó thể đã có người làm @thchr đã nhận hôm nay. Đang mởdocs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
JuliaLang/LinearAlgebra.jl#1754 · 2 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 2 ngày
-
documentation
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 66/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
JuliaPy/CondaPkg.jl#232 ·