Transparent ShutdownManager with cascading ShutdownTrackers (#6040)
* Idea for transparent ShutdownManager use * Tracker hierarchies * Fix wasm shutdown, convinience shutdown method
This commit is contained in:
@@ -28,7 +28,7 @@ use wasm_client_core::helpers::{
|
||||
add_gateway, generate_new_client_keys, parse_recipient, parse_sender_tag,
|
||||
};
|
||||
use wasm_client_core::nym_task::connections::TransmissionLane;
|
||||
use wasm_client_core::nym_task::ShutdownManager;
|
||||
use wasm_client_core::nym_task::ShutdownTracker;
|
||||
use wasm_client_core::storage::core_client_traits::FullWasmClientStorage;
|
||||
use wasm_client_core::storage::wasm_client_traits::WasmClientStorage;
|
||||
use wasm_client_core::storage::ClientStorage;
|
||||
@@ -59,7 +59,7 @@ pub struct NymClient {
|
||||
|
||||
// even though we don't use graceful shutdowns, other components rely on existence of this struct
|
||||
// and if it's dropped, everything will start going offline
|
||||
_task_manager: ShutdownManager,
|
||||
_task_manager: ShutdownTracker,
|
||||
|
||||
packet_type: PacketType,
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ use wasm_client_core::client::base_client::{BaseClientBuilder, ClientInput, Clie
|
||||
use wasm_client_core::client::inbound_messages::InputMessage;
|
||||
use wasm_client_core::helpers::{add_gateway, generate_new_client_keys};
|
||||
use wasm_client_core::nym_task::connections::TransmissionLane;
|
||||
use wasm_client_core::nym_task::ShutdownManager;
|
||||
use wasm_client_core::nym_task::ShutdownTracker;
|
||||
use wasm_client_core::storage::core_client_traits::FullWasmClientStorage;
|
||||
use wasm_client_core::storage::wasm_client_traits::WasmClientStorage;
|
||||
use wasm_client_core::storage::ClientStorage;
|
||||
@@ -41,7 +41,7 @@ pub struct MixFetchClient {
|
||||
requests: ActiveRequests,
|
||||
|
||||
// this has to be guarded by a mutex to be able to disconnect with an immutable reference
|
||||
_shutdown_manager: Mutex<ShutdownManager>,
|
||||
_shutdown_manager: Mutex<ShutdownTracker>,
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
@@ -233,11 +233,11 @@ impl MixFetchClient {
|
||||
self.invalidated.store(true, Ordering::Relaxed);
|
||||
|
||||
console_log!("sending shutdown signal");
|
||||
let mut shutdown_guard = self._shutdown_manager.lock().await;
|
||||
shutdown_guard.send_cancellation();
|
||||
|
||||
let shutdown_guard = self._shutdown_manager.lock().await;
|
||||
shutdown_guard.clone_shutdown_token().cancel();
|
||||
shutdown_guard.close_tracker();
|
||||
console_log!("waiting for shutdown to complete");
|
||||
shutdown_guard.run_until_shutdown().await;
|
||||
shutdown_guard.wait_for_tracker().await;
|
||||
|
||||
self.requests.invalidate_all().await;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user