7311: Wrap peer task system usage in ethScheduler call to match other usages

Signed-off-by: Matilda Clerke <matilda.clerke@consensys.net>
pull/7638/head
Matilda Clerke 1 month ago
parent c2205c4768
commit 1b9922f8b8
  1. 46
      ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckpointDownloadBlockStep.java

@ -84,31 +84,31 @@ public class CheckpointDownloadBlockStep {
final PeerTaskResult<Block> peerTaskResult) { final PeerTaskResult<Block> peerTaskResult) {
final Block block = peerTaskResult.getResult(); final Block block = peerTaskResult.getResult();
if (synchronizerConfiguration.isPeerTaskSystemEnabled()) { if (synchronizerConfiguration.isPeerTaskSystemEnabled()) {
CompletableFuture<Optional<BlockWithReceipts>> futureReceipts = new CompletableFuture<>(); return ethContext.getScheduler().scheduleServiceTask(() -> {
GetReceiptsFromPeerTask task = GetReceiptsFromPeerTask task =
new GetReceiptsFromPeerTask( new GetReceiptsFromPeerTask(
List.of(block.getHeader()), new BodyValidator(), currentProtocolSpecSupplier); List.of(block.getHeader()), new BodyValidator(), currentProtocolSpecSupplier);
PeerTaskExecutorResult<Map<BlockHeader, List<TransactionReceipt>>> executorResult = PeerTaskExecutorResult<Map<BlockHeader, List<TransactionReceipt>>> executorResult =
peerTaskExecutor.execute(task); peerTaskExecutor.execute(task);
if (executorResult.responseCode() == PeerTaskExecutorResponseCode.SUCCESS) { if (executorResult.responseCode() == PeerTaskExecutorResponseCode.SUCCESS) {
List<TransactionReceipt> transactionReceipts = List<TransactionReceipt> transactionReceipts =
executorResult executorResult
.result() .result()
.map((map) -> map.get(block.getHeader())) .map((map) -> map.get(block.getHeader()))
.orElseThrow( .orElseThrow(
() -> () ->
new IllegalStateException("PeerTask response code was success, but empty")); new IllegalStateException("PeerTask response code was success, but empty"));
if (block.getBody().getTransactions().size() != transactionReceipts.size()) { if (block.getBody().getTransactions().size() != transactionReceipts.size()) {
throw new IllegalStateException( throw new IllegalStateException(
"PeerTask response code was success, but incorrect number of receipts returned"); "PeerTask response code was success, but incorrect number of receipts returned");
}
BlockWithReceipts blockWithReceipts = new BlockWithReceipts(block, transactionReceipts);
return CompletableFuture.completedFuture(Optional.of(blockWithReceipts));
} else {
return CompletableFuture.completedFuture(Optional.empty());
} }
BlockWithReceipts blockWithReceipts = new BlockWithReceipts(block, transactionReceipts); });
futureReceipts.complete(Optional.of(blockWithReceipts));
} else {
futureReceipts.complete(Optional.empty());
}
return futureReceipts;
} else { } else {
final org.hyperledger.besu.ethereum.eth.manager.task.GetReceiptsFromPeerTask final org.hyperledger.besu.ethereum.eth.manager.task.GetReceiptsFromPeerTask

Loading…
Cancel
Save