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

darkirc: Enable DAG sync on startup.

parazyd 2 лет назад
Родитель
Сommit
d68cee0a36
1 измененных файлов с 20 добавлено и 18 удалено
  1. 20 18
      bin/darkirc/src/main.rs

+ 20 - 18
bin/darkirc/src/main.rs

@@ -25,7 +25,7 @@ use darkfi::{
         jsonrpc::JsonSubscriber,
         jsonrpc::JsonSubscriber,
         server::{listen_and_serve, RequestHandler},
         server::{listen_and_serve, RequestHandler},
     },
     },
-    system::{StoppableTask, StoppableTaskPtr},
+    system::{sleep, StoppableTask, StoppableTaskPtr},
     util::path::{expand_path, get_config_path},
     util::path::{expand_path, get_config_path},
     Error, Result,
     Error, Result,
 };
 };
@@ -259,27 +259,29 @@ async fn realmain(args: Args, ex: Arc<Executor<'static>>) -> Result<()> {
     info!("Starting P2P network");
     info!("Starting P2P network");
     p2p.clone().start().await?;
     p2p.clone().start().await?;
 
 
-    /*
-    // We'll attempt to sync 5 times
-    for i in 1..=6 {
-        info!("Syncing event DAG (attempt #{})", i);
-        match event_graph.dag_sync().await {
-            Ok(()) => break,
-            Err(e) => {
-                if i == 6 {
-                    error!("Failed syncing DAG. Exiting.");
-                    p2p.stop().await;
-                    return Err(Error::DagSyncFailed)
-                } else {
-                    // TODO: Maybe at this point we should prune or something?
-                    // TODO: Or maybe just tell the user to delete the DAG from FS.
-                    error!("Failed syncing DAG ({}), retrying in 10s...", e);
-                    sleep(10).await;
+    info!("Waiting for some P2P connections...");
+    sleep(5).await;
+    if !p2p.channels().lock().await.is_empty() {
+        // We'll attempt to sync 5 times
+        for i in 1..=6 {
+            info!("Syncing event DAG (attempt #{})", i);
+            match event_graph.dag_sync().await {
+                Ok(()) => break,
+                Err(e) => {
+                    if i == 6 {
+                        error!("Failed syncing DAG. Exiting.");
+                        p2p.stop().await;
+                        return Err(Error::DagSyncFailed)
+                    } else {
+                        // TODO: Maybe at this point we should prune or something?
+                        // TODO: Or maybe just tell the user to delete the DAG from FS.
+                        error!("Failed syncing DAG ({}), retrying in 10s...", e);
+                        sleep(10).await;
+                    }
                 }
                 }
             }
             }
         }
         }
     }
     }
-    */
 
 
     // Signal handling for graceful termination.
     // Signal handling for graceful termination.
     let (signals_handler, signals_task) = SignalHandler::new(ex)?;
     let (signals_handler, signals_task) = SignalHandler::new(ex)?;