v0.2.7-pre.008
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md -->
|
||||
<!-- version: 9 -->
|
||||
<!-- version: 10 -->
|
||||
|
||||
# Plan `0.2.7` — WebSocket Solana standard
|
||||
|
||||
@@ -627,11 +627,15 @@ Si la queue d'une subscription est pleine :
|
||||
1. compteur overflow incrémenté ;
|
||||
2. subscription passe `Failed(BackpressureOverflow)` ;
|
||||
3. best-effort unsubscribe distant si possible ;
|
||||
4. son receiver se termine avec la cause observable via état final ;
|
||||
4. son receiver se termine après drainage des valeurs déjà queueées et la cause reste observable via le handle ;
|
||||
5. les autres subscriptions de la session restent actives.
|
||||
|
||||
Cette policy isole un consumer lent sans sacrifier toute la connexion et sans prétendre être lossless.
|
||||
|
||||
`pre.008` matérialise cette policy dans l'actor : une réservation de capacité non bloquante sur la queue typed ne bloque jamais le socket, `overflow_count` est incrémenté de façon saturante, le handle conserve `ERROR_CODE_WS_BACKPRESSURE_OVERFLOW` comme cause terminale sûre et le binding distant est nettoyé best-effort. Un receiver abandonné est détecté à la notification suivante et libère lui aussi le registry local. `max_active_subscriptions` reste une borne d'admission distincte et sa capacité redevient disponible après toute terminaison locale.
|
||||
|
||||
Les autres transitions runtime vers `Failed` publient également leur `ErrorCode` KSP sûr sur le handle local. Les fermetures normales conservent une cause terminale absente. Aucun payload, URL ou remote subscription ID n'entre dans cette projection.
|
||||
|
||||
### 12.3 Frames/messages/JSON
|
||||
|
||||
Configurer des plafonds finis pour :
|
||||
@@ -738,7 +742,7 @@ payload massif
|
||||
remote request body complet
|
||||
```
|
||||
|
||||
Snapshot public cible : état session, endpoint name/provider/cluster, counts, reconnect state, continuity gaps, subscription IDs locaux + kinds + states. L'ID serveur peut rester interne ; un booléen `remote_bound` suffit pour diagnostiquer le binding sans faire croire à sa stabilité.
|
||||
Snapshot public cible : état session, endpoint name/provider/cluster, counts, reconnect state, continuity gaps, subscription IDs locaux + kinds + states. L'ID serveur reste interne ; un booléen `remote_bound` suffit pour diagnostiquer le binding sans faire croire à sa stabilité. Depuis `pre.008`, les causes terminales sont exposées uniquement sous forme d'`ErrorCode` KSP sûr et `overflow_count` distingue explicitement les saturations de queues de notifications.
|
||||
|
||||
`pre.002` matérialise `WsSessionSnapshot` et `WsSubscriptionSnapshot`. Leurs constructeurs restent crate-internal : les consumers ne peuvent pas fabriquer une fausse projection runtime. Aucun des deux types ne contient URL, credential, request body, raw notification ou remote subscription id.
|
||||
|
||||
@@ -882,7 +886,7 @@ pre.004 DONE — deps tokio-tungstenite/futures-util + actor physique + handsha
|
||||
pre.005 DONE — limites frame/message/request + control frames + cancellation/close/shutdown + adversarial socket tests
|
||||
pre.006 DONE — registry subscriptions + IDs locaux + generic subscribe/unsubscribe engine + channels typed bounded
|
||||
pre.007 DONE — reconnect borné + resubscribe déterministe + continuity gap + races unsubscribe/reconnect
|
||||
pre.008 backpressure per-sub + overflow/limits + leak/lifecycle adversarial tests
|
||||
pre.008 DONE — backpressure per-sub + overflow/limits + causes terminales sûres + leak/lifecycle adversarial tests
|
||||
pre.009 wrappers stable lot A : account + program + logs, DTOs/options/KSP-TRANSPORT-007
|
||||
pre.010 wrappers stable lot B : signature + slot + root, terminaison signature/KSP-TRANSPORT-007
|
||||
pre.011 unstable : block + slotsUpdates + vote, warnings + fallbacks wire/KSP-TRANSPORT-007
|
||||
|
||||
Reference in New Issue
Block a user