diff --git a/app-commons/src/main/scala/org/bitcoins/commons/util/NativeProcessFactory.scala b/app-commons/src/main/scala/org/bitcoins/commons/util/NativeProcessFactory.scala index adbf0b86f6..53b4aa1121 100644 --- a/app-commons/src/main/scala/org/bitcoins/commons/util/NativeProcessFactory.scala +++ b/app-commons/src/main/scala/org/bitcoins/commons/util/NativeProcessFactory.scala @@ -29,9 +29,9 @@ trait NativeProcessFactory extends Logging { /** Starts the binary by spinning up a new process */ def startBinary(): Future[Unit] = Future { processOpt match { - case Some(_) => + case Some(p) => //don't do anything as it is already started - logger.debug(s"Binary was already started!") + logger.info(s"Binary was already started! process=$p") () case None => if (cmd.nonEmpty) { diff --git a/app/server/src/main/scala/org/bitcoins/server/BitcoinSServerMain.scala b/app/server/src/main/scala/org/bitcoins/server/BitcoinSServerMain.scala index 9b76077ccc..e93f3eb845 100644 --- a/app/server/src/main/scala/org/bitcoins/server/BitcoinSServerMain.scala +++ b/app/server/src/main/scala/org/bitcoins/server/BitcoinSServerMain.scala @@ -169,7 +169,14 @@ class BitcoinSServerMain(override val serverArgParser: ServerArgParser)(implicit val callbacksF = chainApiF.map(chainApi => buildNeutrinoCallbacks(wsQueue, chainApi)) - val startedNodeF = configuredNodeF.flatMap(_.start()) + val startedNodeF = { + //can't start connecting to peers until tor is done starting + for { + _ <- startedTorConfigF + started <- configuredNodeF.flatMap(_.start()) + } yield started + } + val startedWalletF = configuredWalletF.flatMap(_.start()) val startedDLCNodeF = dlcNodeF .flatMap(_.start()) diff --git a/tor/src/main/scala/org/bitcoins/tor/client/TorClient.scala b/tor/src/main/scala/org/bitcoins/tor/client/TorClient.scala index ca6fa068c0..e4ef42da57 100644 --- a/tor/src/main/scala/org/bitcoins/tor/client/TorClient.scala +++ b/tor/src/main/scala/org/bitcoins/tor/client/TorClient.scala @@ -127,7 +127,11 @@ object TorClient extends Logging { //set files as executable torBundle.executables.foreach { f => val executable = datadir.resolve(f) - executable.toFile.setExecutable(true) + val isExecutable = executable.toFile.setExecutable(true) + if (!isExecutable) { + sys.error( + s"Could not make file=${executable.toAbsolutePath} executable") + } } // write geoip files @@ -139,7 +143,6 @@ object TorClient extends Logging { logger.info( s"Using prepackaged Tor from bitcoin-s resources, $executableFileName") - executableFileName } } diff --git a/tor/src/main/scala/org/bitcoins/tor/config/TorAppConfig.scala b/tor/src/main/scala/org/bitcoins/tor/config/TorAppConfig.scala index 25939f835d..fa53dec309 100644 --- a/tor/src/main/scala/org/bitcoins/tor/config/TorAppConfig.scala +++ b/tor/src/main/scala/org/bitcoins/tor/config/TorAppConfig.scala @@ -105,7 +105,7 @@ case class TorAppConfig( * place for our node. */ override def start(): Future[Unit] = { - if (torProvided) { + val f = if (torProvided) { logger.info(s"Tor provided to us, skipping start") Future.unit } else { @@ -121,6 +121,7 @@ case class TorAppConfig( torLogFile.toFile.delete() } val client = createClient + for { _ <- client.startBinary() _ = Runtime.getRuntime.addShutdownHook(new Thread() { @@ -147,6 +148,8 @@ case class TorAppConfig( Future.unit } } + f.failed.foreach(err => logger.error("Error starting TorAppConfig", err)) + f } override def stop(): Future[Unit] = {