Unify lock usage; prefer actor ownership over shared locks
I maintainer di solito rispondono entro 4 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Refactoring
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- rust
- Ambito
- distributed-systems
Direzione di ricerca
Inizia leggendo i punti di lock elencati in crates/consensus/src/qbft/component.rs, crates/core/src/parsigdb/memory.rs, crates/dkg/src/sync/client.rs, crates/p2p/src/p2p_context.rs e crates/eth2util/src/network.rs, quindi esamina la documentazione di stile esistente. Il lavoro è completato quando la regola di ownership dei lock è documentata e i punti segnalati sono stati convertiti oppure annotati spiegando perché la loro forma attuale di lock è appropriata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Lock usage is split with no documented rule: std::sync::{Mutex,RwLock} in 41 files, tokio::sync in 22 (parking_lot is not a dependency — the backlog can drop that option). 52 call sites deal with poison (PoisonError::into_inner / expect("... poisoned")).
Several locks guard data with a single logical owner, where a channel/actor removes the lock entirely:
expired_rx: Mutex<Option<mpsc::Receiver<Duty>>>— a mutex wrapping a channel receiver just to make it&self-takeable, the textbook symptom.instances: Arc<Mutex<HashMap<Duty, Arc<InstanceIo<Msg>>>>>— per-duty registry with one owner.parsigdb'sArc<tokio::sync::Mutex<MemDBInner>>— already half-actor (it has an mpsc trim loop).dkg/sync/client.rs#L40-L42mixes astd::sync::RwLockwithwatch::Senders in the same struct;dkg'sMutex + Notifypairs are hand-rolled actors.P2PContext::peer_storereturnsRwLockReadGuard/WriteGuardfrom public methods, leaking guards across the API boundary.SUPPORTED_NETWORKS: LazyLock<RwLock<Vec<Network>>>— a mutable process-global registry.
Proposed change
This is a design task first: pick a general rule (the standard one works: std::sync for short, non-await-crossing critical sections; tokio::sync when a guard is held across .await; actor + channels when data has one logical owner), document it and enforce it. Later, convert the listed actor candidates. Finally:
- Stop returning guards from
P2PContext - Make
SUPPORTED_NETWORKSimmutable-after-init or explicitly injected.
Acceptance
A written rule in the style docs, and the flagged sites either converted or annotated with why the lock is the right shape.
- Lingua principale
- Rust
- Stelle
- 8
- Fork
- 6
- Merge medio
- 4g 3h
- PR unite (30g)
- 18
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NethermindEth/pluto
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
NethermindEth/pluto#719 ·
I maintainer di solito rispondono entro 4 giorni
-
enhancement rust
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
NethermindEth/pluto#640 ·
I maintainer di solito rispondono entro 4 giorni
-
rust
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
NethermindEth/pluto#638 · 1 commento ·
I maintainer di solito rispondono entro 4 giorni
-
enhancement rust
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
NethermindEth/pluto#635 ·
I maintainer di solito rispondono entro 4 giorni
-
Improve `alpha test peers`: match Charon's probes; reduce timeoutsForse già presa @varex83agent l’ha presa 4 giorni fa. Apertabug track:orchestration-cli
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
NethermindEth/pluto#632 ·
I maintainer di solito rispondono entro 4 giorni
Tutte le issue di NethermindEth/pluto
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
zcashlabs/thus-spoke-zakura#153 ·
I maintainer di solito rispondono entro 1 giorno
-
app bug windows-os
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
Improve sublime text syntaxApertaeditor good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
funnyboy-roks/inq#54 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
pnpm/pnpm#16635 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Bedrock request metadata forwarding does not work for /embeddingsForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug llm translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno