Call getFilterHeaderCount async inside of nextFilterHeaderBatchRange while we are fetching our start height for fetching filters (#1327)

This commit is contained in:
Chris Stewart 2020-04-09 14:56:03 -05:00 committed by GitHub
parent 8a079d25d7
commit bb347890c0

View file

@ -142,9 +142,10 @@ case class ChainHandler(
throw UnknownBlockHash(s"Unknown block hash ${prevStopHash}")) throw UnknownBlockHash(s"Unknown block hash ${prevStopHash}"))
} yield prevStopHeader.height + 1 } yield prevStopHeader.height + 1
} }
val blockCountF = getBlockCount
for { for {
startHeight <- startHeightF startHeight <- startHeightF
blockCount <- getBlockCount blockCount <- blockCountF
stopHeight = if (startHeight - 1 + batchSize > blockCount) blockCount stopHeight = if (startHeight - 1 + batchSize > blockCount) blockCount
else startHeight - 1 + batchSize else startHeight - 1 + batchSize
stopBlockOpt <- getHeadersAtHeight(stopHeight).map(_.headOption) stopBlockOpt <- getHeadersAtHeight(stopHeight).map(_.headOption)
@ -162,6 +163,7 @@ case class ChainHandler(
override def nextFilterHeaderBatchRange( override def nextFilterHeaderBatchRange(
prevStopHash: DoubleSha256DigestBE, prevStopHash: DoubleSha256DigestBE,
batchSize: Int): Future[Option[(Int, DoubleSha256Digest)]] = { batchSize: Int): Future[Option[(Int, DoubleSha256Digest)]] = {
val filterHeaderCountF = getFilterHeaderCount
val startHeightF = if (prevStopHash == DoubleSha256DigestBE.empty) { val startHeightF = if (prevStopHash == DoubleSha256DigestBE.empty) {
Future.successful(0) Future.successful(0)
} else { } else {
@ -171,9 +173,10 @@ case class ChainHandler(
throw UnknownBlockHash(s"Unknown block hash ${prevStopHash}")) throw UnknownBlockHash(s"Unknown block hash ${prevStopHash}"))
} yield prevStopHeader.height + 1 } yield prevStopHeader.height + 1
} }
for { for {
startHeight <- startHeightF startHeight <- startHeightF
filterHeaderCount <- getFilterHeaderCount filterHeaderCount <- filterHeaderCountF
stopHeight = if (startHeight - 1 + batchSize > filterHeaderCount) stopHeight = if (startHeight - 1 + batchSize > filterHeaderCount)
filterHeaderCount filterHeaderCount
else startHeight - 1 + batchSize else startHeight - 1 + batchSize