0.3.15-pre.012-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/src/app_state.rs
|
||||
// version: 8
|
||||
// version: 9
|
||||
|
||||
//! Shared backend state owned by the Raw Transaction Ingest Desk Tauri application.
|
||||
|
||||
@@ -121,22 +121,23 @@ impl crate::AppState {
|
||||
if let std::result::Result::Err(error) = admission {
|
||||
return std::result::Result::Err(error);
|
||||
}
|
||||
let generation = self.inventory_generation.lock();
|
||||
let generation = match generation {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => {
|
||||
return std::result::Result::Err(ksp_core_lib::Error::new(
|
||||
crate::ERROR_CODE_APP_STATE_LOCK_FAILED,
|
||||
"Raw Transaction Ingest Desk route inventory generation lock is poisoned",
|
||||
));
|
||||
},
|
||||
let prepared = {
|
||||
let generation = self.inventory_generation.lock();
|
||||
let generation = match generation {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => {
|
||||
return std::result::Result::Err(ksp_core_lib::Error::new(
|
||||
crate::ERROR_CODE_APP_STATE_LOCK_FAILED,
|
||||
"Raw Transaction Ingest Desk route inventory generation lock is poisoned",
|
||||
));
|
||||
},
|
||||
};
|
||||
let prepared = crate::prepare_route_start(&self.config_management, *generation, request);
|
||||
match prepared {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
}
|
||||
};
|
||||
let prepared = crate::prepare_route_start(&self.config_management, *generation, request);
|
||||
let prepared = match prepared {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
std::mem::drop(generation);
|
||||
return crate::start_route_runtime(std::sync::Arc::clone(&self.route_runtime), prepared).await;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs
|
||||
// version: 10
|
||||
// version: 11
|
||||
|
||||
//! Desktop scaffold contract canaries for Raw Transaction Ingest Desk.
|
||||
|
||||
@@ -303,7 +303,8 @@ fn pre_012_window_shutdown_and_start_stop_races_are_bounded_backend_owned() {
|
||||
assert!(runtime.contains(required), "missing pre.012 route-race marker {required}");
|
||||
}
|
||||
let app_state = read_text(app_root().join("src/app_state.rs").as_path());
|
||||
assert!(app_state.contains("let prepared = {"));
|
||||
assert!(app_state.contains("let generation = self.inventory_generation.lock()"));
|
||||
assert!(app_state.contains("std::mem::drop(generation)"));
|
||||
assert!(!app_state.contains("std::mem::drop(generation)"));
|
||||
assert!(app_state.contains("self.route_runtime.ensure_start_admission_open()"));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_runtime.rs
|
||||
// version: 4
|
||||
// version: 5
|
||||
|
||||
#[test]
|
||||
fn pre_009_multi_route_runtime_starts_without_workers_or_shared_store_material() {
|
||||
@@ -130,3 +130,14 @@ fn pre_012_application_shutdown_is_one_shot_and_marks_starting_routes_before_act
|
||||
assert!(matches!(inner.routes.first(), std::option::Option::Some(super::RouteRuntimeSlot::Starting { stop_requested: true, .. })));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_012_fix_001_start_route_future_is_send_for_tauri_command() {
|
||||
fn assert_send_future<'a>(
|
||||
state: &'a crate::AppState,
|
||||
request: &'a crate::RawIngestRouteStartRequestDto,
|
||||
) -> impl std::future::Future<Output = ksp_core_lib::Result<crate::RouteRuntimeLaunch>> + std::marker::Send + 'a {
|
||||
return state.start_route(request);
|
||||
}
|
||||
let _assertion = assert_send_future;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user