mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-02-24 06:57:51 +01:00
Try to debug why shutdown isn't working on windows (#4349)
* Try to debug why shutdown isn't working on windows * Add 2022-05-18-shutdown-bug branch so it triggers release.yml * Cleanup OracleServerMain shutdown * Make cleaner shutdown messages * Remove feature branch Co-authored-by: Chris Stewart <stewart.chris1234@gmail.com>
This commit is contained in:
parent
f680ab8691
commit
8a01432db4
3 changed files with 31 additions and 11 deletions
|
@ -6,9 +6,10 @@ import org.bitcoins.commons.util.{DatadirParser, ServerArgParser}
|
|||
import org.bitcoins.dlc.oracle.DLCOracle
|
||||
import org.bitcoins.dlc.oracle.config.DLCOracleAppConfig
|
||||
import org.bitcoins.server.routes.{BitcoinSServerRunner, CommonRoutes, Server}
|
||||
import org.bitcoins.server.util.BitcoinSAppScalaDaemon
|
||||
import org.bitcoins.server.util.{BitcoinSAppScalaDaemon, ServerBindings}
|
||||
|
||||
import scala.concurrent.Future
|
||||
import scala.concurrent.duration.DurationInt
|
||||
import scala.concurrent.{Await, Future}
|
||||
|
||||
class OracleServerMain(override val serverArgParser: ServerArgParser)(implicit
|
||||
override val system: ActorSystem,
|
||||
|
@ -47,21 +48,24 @@ class OracleServerMain(override val serverArgParser: ServerArgParser)(implicit
|
|||
Source.empty)
|
||||
}
|
||||
|
||||
_ <- server.start()
|
||||
bindings <- server.start()
|
||||
} yield {
|
||||
serverBindingsOpt = Some(bindings)
|
||||
logger.info(s"Done starting oracle!")
|
||||
()
|
||||
}
|
||||
}
|
||||
private var serverBindingsOpt: Option[ServerBindings] = None
|
||||
|
||||
override def stop(): Future[Unit] = {
|
||||
logger.error(s"Exiting process")
|
||||
for {
|
||||
_ <- conf.stop()
|
||||
_ = logger.info(s"Stopped DLC Oracle")
|
||||
_ <- system.terminate()
|
||||
_ <- serverBindingsOpt match {
|
||||
case Some(bindings) => bindings.stop()
|
||||
case None => Future.unit
|
||||
}
|
||||
} yield {
|
||||
logger.info(s"Actor system terminated")
|
||||
logger.info(s"Stopped DLC Oracle")
|
||||
()
|
||||
}
|
||||
}
|
||||
|
@ -86,5 +90,12 @@ object OracleServerMain extends BitcoinSAppScalaDaemon {
|
|||
DLCOracleAppConfig(datadirParser.datadir, Vector(datadirParser.baseConfig))(
|
||||
system.dispatcher)
|
||||
|
||||
new OracleServerMain(serverCmdLineArgs).run()
|
||||
val m = new OracleServerMain(serverCmdLineArgs)
|
||||
m.run()
|
||||
|
||||
sys.addShutdownHook {
|
||||
logger.info(
|
||||
s"@@@@@@@@@@@@@@@@@@@@@ Shutting down ${getClass.getSimpleName} @@@@@@@@@@@@@@@@@@@@@")
|
||||
Await.result(m.stop(), 10.seconds)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.bitcoins.server.util
|
||||
|
||||
import akka.actor.ActorSystem
|
||||
import grizzled.slf4j.Logging
|
||||
|
||||
trait BitcoinSApp {
|
||||
def actorSystemName: String
|
||||
|
@ -14,6 +15,6 @@ trait BitcoinSApp {
|
|||
}
|
||||
|
||||
/** Trait for using BitcoinS app with a daemon backend */
|
||||
trait BitcoinSAppScalaDaemon extends App with BitcoinSApp {
|
||||
trait BitcoinSAppScalaDaemon extends App with BitcoinSApp with Logging {
|
||||
final override def commandLineArgs: Array[String] = args
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ import org.bitcoins.wallet.models.SpendingInfoDAO
|
|||
|
||||
import java.time.Instant
|
||||
import scala.concurrent.duration.DurationInt
|
||||
import scala.concurrent.{ExecutionContext, Future, Promise}
|
||||
import scala.concurrent.{Await, ExecutionContext, Future, Promise}
|
||||
|
||||
class BitcoinSServerMain(override val serverArgParser: ServerArgParser)(implicit
|
||||
override val system: ActorSystem,
|
||||
|
@ -618,5 +618,13 @@ object BitcoinSServerMain extends BitcoinSAppScalaDaemon {
|
|||
datadirParser.datadir,
|
||||
Vector(datadirParser.baseConfig, serverCmdLineArgs.toConfig))(system)
|
||||
|
||||
new BitcoinSServerMain(serverCmdLineArgs).run()
|
||||
val m = new BitcoinSServerMain(serverCmdLineArgs)
|
||||
|
||||
m.run()
|
||||
|
||||
sys.addShutdownHook {
|
||||
logger.info(
|
||||
s"@@@@@@@@@@@@@@@@@@@@@ Shutting down ${getClass.getSimpleName} @@@@@@@@@@@@@@@@@@@@@")
|
||||
Await.result(m.stop(), 10.seconds)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue