Refactor PeerFinder.peerConnectionScheduler() into method (#5377)

This commit is contained in:
Chris Stewart 2024-01-30 14:35:17 -06:00 committed by GitHub
parent 76e468c5c4
commit 75f6a3b4ec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -112,7 +112,9 @@ case class PeerFinder(
private val isConnectionSchedulerRunning = new AtomicBoolean(false)
private lazy val peerConnectionScheduler: Cancellable =
private[this] var peerConnectionCancellableOpt: Option[Cancellable] = None
private def peerConnectionScheduler(): Cancellable = {
system.scheduler.scheduleWithFixedDelay(
initialDelay = initialDelay,
delay = nodeAppConfig.tryNextPeersInterval) { () =>
@ -148,8 +150,10 @@ case class PeerFinder(
}
}
}
}
override def start(): Future[PeerFinder] = {
if (!isStarted.get()) {
logger.info(
s"Starting PeerFinder initialDelay=${initialDelay} paramPeers=$paramPeers")
val start = System.currentTimeMillis()
@ -166,7 +170,7 @@ case class PeerFinder(
_peersToTry.pushAll(getPeersFromResources)
_peersToTry.pushAll(dbNonCf)
_peersToTry.pushAll(dbCf, priority = 1)
peerConnectionScheduler //start scheduler
peerConnectionCancellableOpt = Some(peerConnectionScheduler())
this
}
@ -174,7 +178,7 @@ case class PeerFinder(
startedF
} else {
logger.info("Peer discovery disabled.")
peerConnectionScheduler //start scheduler
peerConnectionCancellableOpt = Some(peerConnectionScheduler())
Future.successful(this)
}
@ -183,6 +187,10 @@ case class PeerFinder(
_ = logger.info(
s"Done starting PeerFinder, it took ${System.currentTimeMillis() - start}ms")
} yield peerFinder
} else {
logger.warn(s"PeerFinder already started")
Future.successful(this)
}
}
def reconnect(peer: Peer): Future[Unit] = {
@ -197,10 +205,12 @@ case class PeerFinder(
}
override def stop(): Future[PeerFinder] = {
if (isStarted.get()) {
logger.info(s"Stopping PeerFinder")
isStarted.set(false)
//stop scheduler
peerConnectionScheduler.cancel()
peerConnectionCancellableOpt.map(_.cancel())
peerConnectionCancellableOpt = None
//delete try queue
_peersToTry.clear()
@ -216,10 +226,16 @@ case class PeerFinder(
}
stopF.failed.foreach { e =>
logger.error(s"Failed to stop peer finder. Peers: ${_peerData.map(_._1)}",
logger.error(
s"Failed to stop peer finder. Peers: ${_peerData.map(_._1)}",
e)
}
stopF
} else {
logger.warn(s"PeerFinder already stopped")
Future.successful(this)
}
}
/** creates and initialises a new test peer */