Failures during add_hookspecs / historic replay leave partial state
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 50/100
Hướng nghiên cứu
Start with add_hookspecs() and the _verify_hook call that can raise for an already-registered impl, then see where set_specification() installs the spec before that check runs. Next, look at register() and the comment near _maybe_apply_history, which admits a failed replay leaves the plugin half-registered. Done means a failed add_hookspecs leaves no spec behind so a retry succeeds, and a failed replay in register() rolls the registry back. The issue does not say how rollback should be structured, so confirm the approach with maintainers before writing it.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
🤖 Written by Claude Opus 5.5 via Claude Code for the pluggy maintainers; I prompted it, it did the work, I read it.
add_hookspecs(): if_verify_hookraises for an already-registered impl, the spec stays installed viaset_specification(). A retry then raisesValueError: Hook 'h' is already registered within namespace ..., even after unregistering the bad plugin.register(): if a historic replay (_maybe_apply_history) raises, the plugin stays in the registry with only the hookimpls processed before the failure. The code comment there acknowledges this.
Proposal: validate first and install afterwards in add_hookspecs. For the replay case, roll back on exception.
Found while working on #759.
- Ngôn ngữ chính
- Python
- Star
- 1.7k
- Fork
- 172
- Merge trung bình
- 2 ngày 18 giờ
- Pull request đã merge (30 ngày)
- 21
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 pytest-dev/pluggy
-
Plugin registry compares plugins by equality, not identityCó thể đã có người làm @00200200 đã nhận 2 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
pytest-dev/pluggy#760 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Defaulted positional-only hook parameters are forwarded as keywordsCó thể đã có người làm @adenzhou1350 đã nhận 3 ngày trước. Đang mở
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 45/100
pytest-dev/pluggy#774 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
list_plugin_distinfo() keeps unregistered pluginsCó thể đã có người làm @RonnyPfannschmidt đã nhận 4 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
pytest-dev/pluggy#763 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
unregister() argument validation relies on assertCó thể đã có người làm @ekanshul đã nhận 4 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 42/100
pytest-dev/pluggy#762 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Downstream] devpi broken - trying to register `None`Có thể đã có người làm @bluetech đã nhận 13 ngày trước. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 58/100
pytest-dev/pluggy#749 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của pytest-dev/pluggy
Issue tương tự
-
Broken links in the docsĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
uniswap-python/uniswap-python#487 ·
-
[Bug]: agent_final_response still returns the abandoned branch's answer after navigate moves HEAD backCó thể đã có người làm @enyst đã nhận hôm nay. Đang mởbug priority:low ready-for-dev
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
OpenHands/software-agent-sdk#5822 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
-
area: server enhancement good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
scs0209/laya-guard#52 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 2 ngày