Centralize retry/backoff configuration on `backon`; inject retries where components give up
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
- 35/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- rust
- Lĩnh vực
- distributed-systems
Hướng nghiên cứu
Bắt đầu với crates/app/src/retry.rs và crates/core/src/expbackoff.rs, sau đó lần theo các entry point đã nêu của scheduler, relay/dial.rs, quic_upgrade.rs, eth1wrap, dkg, recast và wire sink. So sánh hành vi retry và polling của chúng trước khi quyết định cách phân tầng các policy dùng chung. Được xem là hoàn tất khi các cấu hình trùng lặp và các vòng lặp thủ công đã được xử lý, đồng thời các give-up site được nêu sẽ retry với các deadline dự kiến.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
backon is already the workspace retry engine and app/src/retry.rs (the Charon app/retry port) is built on it — but the workspace has drifted into at least 5 distinct backoff parameter sets and 4 drive mechanisms:
retry.rsdefaults (250ms/12s/1.6) — zero call sites (#534 tracks wiring it into the duty callbacks).core::expbackofffast()(100ms/5s) anddefault()(1s/120s) — used by scheduler/sse/bootnode, sometimes driven manually via.next()+expect.p2p/src/relay/dial.rs#L104-L126— a hand-written duplicate ofexpbackoff::default()(its doc even cites the same Charon config), reimplemented because p2p needs a pollableDurationrather than an async wrapper.quic_upgrade.rs— a third scheme in units of minutes (1→512, doubling).eth1wrap— Alloy'sRetryBackoffLayer::new(10, 1000, 100), a fourth policy in a foreign library's units.- Fixed-delay loops in
dkg/sync(250ms),cli test/peers(for attempt in 0..5, 5s intervals). Same family:dkgbusy-polls node signatures on a 100ms ticker, re-locking and cloning the accumulated slot vector every tick (nodesigs.rs#L144-L164), andexchanger.rs#L561polls with a bare 100mssleep— both want aNotify/watchsignal instead of a poll.
Meanwhile, components that should retry just give up and wait for the next tick: scheduler resolve_duties errors are logged "(retrying next slot)" — a beacon-node blip loses a slot's duty resolution; bcast/recast retries next epoch; the wire-layer store/broadcast sinks log and swallow errors (wire.rs#L739-L746 and siblings) — precisely the points Charon wraps in async-retry.
Proposed change
- One retry module (the existing
app::retry+core::expbackoff, merged or clearly layered) exposing the named policies (fast,default, plus a pollable-Durationhelper for poll-based behaviours sorelay/dial.rscan delete its copy). - Replace the manual
.next()/hand-rolled loops withbackon'sRetryableor the shared pollable helper; expresseth1wrap's policy in the same config vocabulary. - Inject retries at the give-up sites above (scheduler duty resolution, recast, wire sinks), with per-duty deadlines from the existing
DeadlineCalculatorplumbing. #534 covers the five Charon duty-callback wrap points; this issue covers the config unification and the remaining sites.
- Ngôn ngữ chính
- Rust
- Star
- 8
- Fork
- 5
- Merge trung bình
- 4 ngày 18 giờ
- Pull request đã merge (30 ngày)
- 4
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
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 NethermindEth/pluto
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
NethermindEth/pluto#719 ·
-
enhancement rust
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
NethermindEth/pluto#640 ·
-
rust
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
NethermindEth/pluto#638 · 1 bình luận ·
-
enhancement rust
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
NethermindEth/pluto#635 ·
-
Improve `alpha test peers`: match Charon's probes; reduce timeoutsCó thể đã có người làm @varex83agent đã nhận 24 ngày trước. Đang mởbug track:orchestration-cli
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 28/100
NethermindEth/pluto#632 ·
Tất cả issue của NethermindEth/pluto
Issue tương tự
-
units: No `#` in rustdoc headingĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 67/100
rust-bitcoin/rust-bitcoin#7089 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 2 ngày
-
area/tools bug session-analysis
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: Python OpenTelemetrySectionConfig has no file_sinksCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
NVIDIA/NeMo-Relay#1514 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
prompting proposal tool triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
can1357/oh-my-pi#17041 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
README crane example out of dateĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 84/100
nix-community/fenix#262 ·