From 0e3ffb749ef4a79883bb339cd1ca60395a4ecf8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Thu, 18 Sep 2025 10:38:27 +0100 Subject: [PATCH] using same hierarchy of trackers for client shutdown control --- .../client-core/src/client/base_client/mod.rs | 22 +++++++++---------- sdk/rust/nym-sdk/src/mixnet/client.rs | 2 +- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/common/client-core/src/client/base_client/mod.rs b/common/client-core/src/client/base_client/mod.rs index a093977bbb..0002da00b5 100644 --- a/common/client-core/src/client/base_client/mod.rs +++ b/common/client-core/src/client/base_client/mod.rs @@ -892,7 +892,7 @@ where // Create a shutdown tracker for this client - either as a child of provided tracker // or get one from the registry let shutdown_tracker = match self.shutdown { - Some(parent_tracker) => parent_tracker.child_tracker(), + Some(parent_tracker) => parent_tracker.clone(), None => nym_task::get_sdk_shutdown_tracker()?, }; @@ -926,7 +926,7 @@ where self.user_agent.clone(), generate_client_stats_id(*self_address.identity()), input_sender.clone(), - &shutdown_tracker.child_tracker(), + &shutdown_tracker.clone(), ); // needs to be started as the first thing to block if required waiting for the gateway @@ -936,7 +936,7 @@ where shared_topology_accessor.clone(), self_address.gateway(), self.wait_for_gateway, - &shutdown_tracker.child_tracker(), + &shutdown_tracker.clone(), ) .await?; @@ -956,7 +956,7 @@ where stats_reporter.clone(), #[cfg(unix)] self.connection_fd_callback, - &shutdown_tracker.child_tracker(), + &shutdown_tracker.clone(), ) .await?; let gateway_ws_fd = gateway_transceiver.ws_fd(); @@ -964,7 +964,7 @@ where let reply_storage = Self::setup_persistent_reply_storage( reply_storage_backend, key_rotation_config, - &shutdown_tracker.child_tracker(), + &shutdown_tracker.clone(), ) .await?; @@ -975,7 +975,7 @@ where reply_storage.key_storage(), reply_controller_sender.clone(), stats_reporter.clone(), - &shutdown_tracker.child_tracker(), + &shutdown_tracker.clone(), ); // The message_sender is the transmitter for any component generating sphinx packets @@ -983,10 +983,8 @@ where // traffic stream. // The MixTrafficController then sends the actual traffic - let (message_sender, client_request_sender) = Self::start_mix_traffic_controller( - gateway_transceiver, - &shutdown_tracker.child_tracker(), - ); + let (message_sender, client_request_sender) = + Self::start_mix_traffic_controller(gateway_transceiver, &shutdown_tracker.clone()); // Channels that the websocket listener can use to signal downstream to the real traffic // controller that connections are closed. @@ -1015,7 +1013,7 @@ where shared_lane_queue_lengths.clone(), client_connection_rx, stats_reporter.clone(), - &shutdown_tracker.child_tracker(), + &shutdown_tracker.clone(), ); if !self @@ -1031,7 +1029,7 @@ where shared_topology_accessor.clone(), message_sender, stats_reporter.clone(), - &shutdown_tracker.child_tracker(), + &shutdown_tracker.clone(), ); } diff --git a/sdk/rust/nym-sdk/src/mixnet/client.rs b/sdk/rust/nym-sdk/src/mixnet/client.rs index 5729b40393..db72a72bf4 100644 --- a/sdk/rust/nym-sdk/src/mixnet/client.rs +++ b/sdk/rust/nym-sdk/src/mixnet/client.rs @@ -770,7 +770,7 @@ where client_output, client_state.clone(), nym_address, - started_client.shutdown_handle.child_tracker(), + started_client.shutdown_handle.clone(), packet_type, );