Files
khadhroony-solana-project/deltas/0.2.7/pre.009-fix.002.md

3.4 KiB

Delta 0.2.7-pre.009-fix.002 — robustesse du fixture HTTP one-shot Transactions

Base

Base directe publiée :

0.2.7-pre.009-fix.001
Cargo 0.2.7-pre.9.fix.1

La validation opérateur de fix.001 confirme :

  • cargo fmt --all : vert ;
  • audit Python KSP : vert ;
  • cargo check --workspace : vert ;
  • cargo clippy --workspace --all-targets : vert ;
  • premier cargo test -p ksp-onchain-transport-lib : 294 tests unitaires verts, 33 tests d'API publique verts, 22 tests de release completeness verts ;
  • le passage ultérieur via cargo test --workspace reproduit une seule défaillance intermittente dans un canari HTTP historique getTransaction, avec http_connection_failed / Connection refused sur son endpoint local one-shot.

Le wrapper WebSocket pre.009 et le correctif Clippy fix.001 ne sont pas en cause : le même test getTransaction est passé quelques secondes auparavant dans le premier run Transport.

Signal technique

livraison                 = 0.2.7-pre.009-fix.002
workspace.package.version = 0.2.7-pre.9.fix.2
commit                    = v0.2.7-pre.009-fix.002

Aucun tag Git n'est requis pour ce fix de prerelease.

Diagnostic

Le helper historique serve_transaction_once consommait sans distinction la première connexion TCP acceptée :

accept
-> read_transaction_request
-> réponse fixture
-> fermeture du listener

read_transaction_request peut cependant revenir sur EOF avant qu'une requête HTTP complète ait été reçue. Une connexion locale ouverte puis abandonnée avant l'envoi complet de la requête pouvait donc consommer le serveur one-shot. Une tentative cliente suivante rencontrait alors un listener déjà fermé et pouvait échouer avec Connection refused.

Cette faiblesse appartient uniquement au fixture de test local. Aucun changement du runtime HTTP ou WebSocket n'est requis.

Correction

serve_transaction_once ignore désormais toute connexion qui se termine avant que transaction_request_complete(...) soit vrai. Le body fixture n'est consommé et le listener n'est terminé qu'après réception d'une requête HTTP complète.

Un canari déterministe est ajouté :

transaction_fixture_ignores_abandoned_connection_before_complete_request

Il ouvre volontairement une première connexion TCP locale puis la ferme sans envoyer de requête, avant d'exécuter un getTransaction normal. Le fixture doit rester disponible et servir correctement la requête complète suivante.

Le correctif est exclusivement test-only : aucun fichier src/, aucun DTO, aucune règle de retry, aucun wrapper RPC et aucune sémantique WebSocket ne changent.

Fichiers

Cargo.toml
crates/ksp-onchain-transport-lib/unit_tests/rpc_transactions.rs
deltas/0.2.7/pre.009-fix.002.md

ROADMAP.md, CHANGELOG.md, le plan et le document de validation restent inchangés.

Validation attendue

cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test --workspace

Comptages Transport attendus :

unit tests             = 295
public API tests       = 33
release completeness   = 22

Les validations Cargo doivent être exécutées par l'opérateur ; elles ne sont pas revendiquées depuis l'environnement de préparation du delta.