Converge the coexisting subscription mechanisms
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
- 25/100
- Tipo di issue
- Refactoring
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- rust
- Ambito
- distributed-systems
Direzione di ricerca
Inizia confrontando le implementazioni delle sottoscrizioni denominate in crates/core/src/scheduler.rs, crates/app/src/sse/mod.rs, crates/core/src/sigagg.rs e app/node/wire.rs, usando la semantica wireX di Charon come riferimento per la parità. Definisci le forme di sottoscrizione approvate e le regole relative a durata, scarto, ritardo, errori e annullamento della sottoscrizione, quindi migra le implementazioni divergenti e verifica che la semantica documentata sia coerente in tutto il workspace.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The workspace has six mutually incompatible subscription patterns, with divergent semantics for lifetime, drop, lagging, and error propagation:
- tokio
broadcast+ spawned pump — only in the scheduler (the solebroadcastuse in the workspace). Vec<mpsc::Sender<T>>fan-out — SSE listener, with both a builder-time and an actor-round-trip runtimesubscribe(sse/mod.rs#L68).watch::Receiver-returningsubscribe()— p2p peers, dkg sync, readiness.- Sync
Box<dyn Fn>callback vectors — consensus wrapper/qbft/priority; the prioritiser's is documented "Not thread safe relative to a running instance". Arc<dyn Fn> -> BoxFuturecallback vectors — sigagg, parsigdb, fetcher (a consuming-builder variant), bcast, parsigex, validatorapi. Five different receiver forms (&self,&mut self,async &self,self -> Self, interiorMutex).- Charon-style function-pointer wiring in
app/node/wire.rs.
Semantics diverge where it matters:
Laggedis handled only in the scheduler, by silently and permanently unsubscribing the lagging subscriber;Closedalso breaks silently.- Subscriber errors: scheduler logs and continues;
sigaggpropagates with?, so one failing subscriber aborts the remaining ones (same in parsigdb) — this asymmetry is load-bearing for duty completion. - No
subscribe()anywhere returns an unsubscribe handle (scheduler TODO), and the scheduler documents a known leak of detached tasks for stuck handlers.
Related: #84 (make sub calling non-blocking).
Proposed change
This is a design task first: pick one or two blessed shapes (e.g. broadcast/watch channels for events, an async-callback registry with defined error semantics for duty pipeline stages), and document lifetime/drop/lag/error rules. Then migrate the outliers. Concrete decisions to make:
- Should a subscriber error abort sibling subscribers (current sigagg/parsigdb) or be isolated (current scheduler)? Charon's
wireXsemantics are the parity reference. - What happens on lag: drop events, kill the subscription (current), or apply backpressure?
- Unsubscribe/drop story: handles vs relying on channel closure.
- 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 6 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
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Update dusk-bls12_381 to 0.16Forse già presa @HDauven l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
`TcpListenerService` shares one `Extensions` store across all accepted connectionsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
googlefonts/fontquant#43 ·