From 087ef29429964ec8936aafc7f4e410e72522f3c7 Mon Sep 17 00:00:00 2001 From: garyschulte Date: Mon, 18 Dec 2023 16:04:37 -0800 Subject: [PATCH] in snap client, move child enqueue requests to after persist step to avoid throwing MerkleTrieException for failed lookups Signed-off-by: garyschulte --- .../eth/sync/snapsync/PersistDataStep.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/PersistDataStep.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/PersistDataStep.java index 9b72d056046f..b279ba96d10c 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/PersistDataStep.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/PersistDataStep.java @@ -56,19 +56,6 @@ public List> persist(final List> tas final WorldStateStorage.Updater updater = worldStateStorage.updater(); for (Task task : tasks) { if (task.getData().isResponseReceived()) { - // enqueue child requests - final Stream childRequests = - task.getData().getChildRequests(downloadState, worldStateStorage, snapSyncState); - if (!(task.getData() instanceof TrieNodeHealingRequest)) { - enqueueChildren(childRequests); - } else { - if (!task.getData().isExpired(snapSyncState)) { - enqueueChildren(childRequests); - } else { - continue; - } - } - // persist nodes final int persistedNodes = task.getData() @@ -85,6 +72,19 @@ public List> persist(final List> tas downloadState.getMetricsManager().notifyNodesGenerated(persistedNodes); } } + + // enqueue child requests + final Stream childRequests = + task.getData().getChildRequests(downloadState, worldStateStorage, snapSyncState); + if (!(task.getData() instanceof TrieNodeHealingRequest)) { + enqueueChildren(childRequests); + } else { + if (!task.getData().isExpired(snapSyncState)) { + enqueueChildren(childRequests); + } else { + continue; + } + } } } updater.commit();