3.7 KiB
Delta v0.3.15-pre.015-fix.001 — Stop Yellowstone post-half-close
Base
ksp-general-0.3.15-pre.015.zip
SHA-256: 3ab4b976ae612286b577aa003c10e6b9627be040a0a0fc51b2c9e45d6616893e
Le gate pre.015 confirme la correction de la saturation locale : les audits, cargo check, Clippy, les suites ciblées et le workspace passent, le canari Transport de backpressure soutenue passe, et la trace live fournie ne contient plus de grpc_backpressure_overflow Yellowstone pendant le run. Le défaut restant appartient au même contrat pre.015, car le gate exige explicitement Stop ciblé -> Stopped.
Défaut observé
20:57:33.659 Stop Yellowstone demandé
20:57:33.778 PublicNode renvoie grpc Status Unknown pendant graceful shutdown
20:57:33.780 Worker classe la source source_failed / grpc_status
20:57:34.918 route terminale Faulted / Unhealthy
La fonction finish_client_half_close() est exécutée uniquement après déclenchement du shutdown local. Elle classait pourtant tout Status reçu après le half-close comme une nouvelle faute distante, ce qui remplaçait à tort la terminaison coopérative déjà engagée.
Correction
Pendant finish_client_half_close() :
Status reçu après shutdown local explicite
-> log safe du code gRPC
-> state = Closed
-> terminal_error_code = None
-> session.close() = Ok(())
La branche active reste inchangée : un Status reçu par run_subscribe_actor() avant shutdown continue d'entrer dans la politique de reconnect bornée et reste terminal si cette politique ne peut pas récupérer la session.
Le timeout de fermeture hostile reste également inchangé et borné par close_timeout.
Canaris
yellowstone_explicit_close_accepts_remote_status_after_local_half_close
yellowstone_stream_remote_status_is_safe_and_terminal
yellowstone_hostile_server_shutdown_is_bounded_by_close_timeout
release_v0_3_15_pre_015_fix_001_local_close_status_is_closed_without_weakening_active_status_failure
Frontières
Aucun changement de Worker, Store, Config, Desk, schema, RAW, reconnect budget, capacités de queue ou API publique. Aucun status reçu en fonctionnement normal n'est reclassé en succès.
Version
workspace.package.version : 0.3.15-pre.15.fix.1
root Cargo header counter : 633
Validation attendue
cargo fmt --all
cargo fmt --all -- --check
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.15
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-onchain-transport-lib --all-targets --all-features
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features
cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features
cargo test --workspace --all-targets --all-features
(cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev)
Live : Yellowstone Mainnet doit rester sain pendant le run puis terminer Stopped après Stop ciblé, y compris si le provider renvoie Unknown après le half-close. HTTP Block Polling doit conserver son comportement Stopped/Healthy indépendant.
Inventaire exact du delta
Ajout :
deltas/0.3.15/pre.015-fix.001.md
Modifications :
Cargo.toml
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/src/grpc_stream.rs
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
crates/ksp-onchain-transport-lib/unit_tests/grpc_stream.rs
docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md
Suppressions : aucune.