v0.3.15-pre.008-fix.002
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 610
|
||||
# version: 611
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-raw-transaction-ingest-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-raw-transaction-lib", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api", "crates/ksp-worker-raw-transaction-ingest-lib"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.3.15-pre.8.fix.1"
|
||||
version = "0.3.15-pre.8.fix.2"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/src/route_runtime.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! Mono-route Store and Worker lifecycle owned by Raw Transaction Ingest Desk.
|
||||
|
||||
@@ -79,7 +79,7 @@ impl crate::RouteRuntimeState {
|
||||
std::result::Result::Err(_) => return std::result::Result::Err(runtime_lock_error()),
|
||||
};
|
||||
match &inner.slot {
|
||||
RouteRuntimeSlot::Starting { token } if token == reservation.token => {},
|
||||
RouteRuntimeSlot::Starting { token } if *token == reservation.token => {},
|
||||
RouteRuntimeSlot::Idle | RouteRuntimeSlot::Starting { .. } | RouteRuntimeSlot::Active { .. } => {
|
||||
return std::result::Result::Err(ksp_core_lib::Error::new(
|
||||
crate::ERROR_CODE_ROUTE_RUNTIME_STATE_INVALID,
|
||||
@@ -98,7 +98,7 @@ impl crate::RouteRuntimeState {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
if matches!(&inner.slot, RouteRuntimeSlot::Starting { token: current, .. } if current == token) {
|
||||
if matches!(&inner.slot, RouteRuntimeSlot::Starting { token: current, .. } if *current == token) {
|
||||
inner.slot = RouteRuntimeSlot::Idle;
|
||||
}
|
||||
}
|
||||
@@ -109,7 +109,7 @@ impl crate::RouteRuntimeState {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
if matches!(&inner.slot, RouteRuntimeSlot::Active { token: current, .. } if current == token) {
|
||||
if matches!(&inner.slot, RouteRuntimeSlot::Active { token: current, .. } if *current == token) {
|
||||
inner.slot = RouteRuntimeSlot::Idle;
|
||||
}
|
||||
}
|
||||
|
||||
59
deltas/0.3.15/pre.008-fix.002.md
Normal file
59
deltas/0.3.15/pre.008-fix.002.md
Normal file
@@ -0,0 +1,59 @@
|
||||
<!-- file: deltas/0.3.15/pre.008-fix.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.15-pre.008-fix.002`
|
||||
|
||||
## Objet
|
||||
|
||||
Corriger les trois comparaisons de token restantes révélées par le second gate opérateur de `pre.008`, sans modifier le périmètre fonctionnel du runtime mono-route.
|
||||
|
||||
## Défaut observé
|
||||
|
||||
Après `pre.008-fix.001`, `RouteRuntimeInner` est bien présent et la future Tauri ne conserve plus de `MutexGuard` à travers un `await`. Le compilateur atteint alors les trois gardes de cohérence du slot et signale que leurs bindings sont des références :
|
||||
|
||||
```text
|
||||
&u64 == u64
|
||||
```
|
||||
|
||||
Les patterns concernés inspectent `&inner.slot`. Les bindings `token` / `current` sont donc des `&u64` et doivent être déréférencés pour être comparés aux tokens `u64` détenus par la réservation ou passés aux helpers.
|
||||
|
||||
## Correction
|
||||
|
||||
Les trois gardes restaurent le déréférencement exact :
|
||||
|
||||
```text
|
||||
*token == reservation.token
|
||||
*current == token
|
||||
*current == token
|
||||
```
|
||||
|
||||
Cela couvre respectivement :
|
||||
|
||||
- l'activation d'une réservation `Starting` ;
|
||||
- le rollback d'une réservation `Starting` ;
|
||||
- la libération d'un slot `Active` arrivé au terminal.
|
||||
|
||||
## Périmètre inchangé
|
||||
|
||||
Le fix ne modifie aucun contrat de `pre.008` :
|
||||
|
||||
- runtime strictement mono-route ;
|
||||
- même revalidation Start issue de `pre.007` ;
|
||||
- même ouverture, health et fermeture Store via `ksp-store-lib` ;
|
||||
- même lancement `RawTransactionIngestWorker::start_with_runtime_resources` ;
|
||||
- même Stop coopératif ;
|
||||
- aucun multi-route de `pre.009` ;
|
||||
- aucun monitoring continu de `pre.010`.
|
||||
|
||||
Le delta publié `pre.008-fix.001` reste immuable ; la présente correction supersède uniquement son interprétation erronée des trois bindings de pattern.
|
||||
|
||||
## Version
|
||||
|
||||
```text
|
||||
header racine : 610 -> 611
|
||||
workspace : 0.3.15-pre.8.fix.1 -> 0.3.15-pre.8.fix.2
|
||||
```
|
||||
|
||||
## Gate opérateur
|
||||
|
||||
Le gate complet de `pre.008` doit être rejoué après application de ce fix.
|
||||
Reference in New Issue
Block a user