Просмотр исходного кода

minerd: wait workers to terminate before clearing the stop signal channel

skoupidi 1 год назад
Родитель
Сommit
4e817e91dd
2 измененных файлов с 5 добавлено и 2 удалено
  1. 4 1
      bin/minerd/src/lib.rs
  2. 1 1
      bin/minerd/src/main.rs

+ 4 - 1
bin/minerd/src/lib.rs

@@ -29,7 +29,7 @@ use darkfi::{
         server::{listen_and_serve, RequestHandler},
         server::{listen_and_serve, RequestHandler},
         settings::RpcSettings,
         settings::RpcSettings,
     },
     },
-    system::{ExecutorPtr, StoppableTask, StoppableTaskPtr},
+    system::{sleep, ExecutorPtr, StoppableTask, StoppableTaskPtr},
     Error, Result,
     Error, Result,
 };
 };
 
 
@@ -134,6 +134,9 @@ impl Minerd {
         // Stop the mining node
         // Stop the mining node
         info!(target: "minerd::Minerd::stop", "Stopping miner threads...");
         info!(target: "minerd::Minerd::stop", "Stopping miner threads...");
         self.node.sender.send(()).await?;
         self.node.sender.send(()).await?;
+        while self.node.stop_signal.receiver_count() > 1 {
+            sleep(1).await;
+        }
 
 
         // Stop the JSON-RPC task
         // Stop the JSON-RPC task
         info!(target: "minerd::Minerd::stop", "Stopping JSON-RPC server...");
         info!(target: "minerd::Minerd::stop", "Stopping JSON-RPC server...");

+ 1 - 1
bin/minerd/src/main.rs

@@ -71,6 +71,6 @@ async fn realmain(args: Args, ex: Arc<Executor<'static>>) -> Result<()> {
 
 
     daemon.stop().await?;
     daemon.stop().await?;
 
 
-    info!(target: "minerd", "Shut down successfully, waitting background threads to stop...");
+    info!(target: "minerd", "Shut down successfully");
     Ok(())
     Ok(())
 }
 }