From e4c8b4a23b7acd621e9c871fce62e6c92679ac34 Mon Sep 17 00:00:00 2001 From: garyschulte Date: Mon, 4 Mar 2024 12:21:15 -0800 Subject: [PATCH] remove initial sync delay for chain pruner Signed-off-by: garyschulte --- .../besu/cli/options/unstable/ChainPruningOptions.java | 8 ++------ .../besu/controller/BesuControllerBuilder.java | 6 ++---- .../hyperledger/besu/ethereum/chain/ChainDataPruner.java | 8 -------- .../besu/ethereum/chain/ChainDataPrunerTest.java | 3 --- 4 files changed, 4 insertions(+), 21 deletions(-) diff --git a/besu/src/main/java/org/hyperledger/besu/cli/options/unstable/ChainPruningOptions.java b/besu/src/main/java/org/hyperledger/besu/cli/options/unstable/ChainPruningOptions.java index 5a703e6bd72..07499503d21 100644 --- a/besu/src/main/java/org/hyperledger/besu/cli/options/unstable/ChainPruningOptions.java +++ b/besu/src/main/java/org/hyperledger/besu/cli/options/unstable/ChainPruningOptions.java @@ -32,9 +32,6 @@ public class ChainPruningOptions implements CLIOptions private static final String CHAIN_PRUNING_BLOCKS_RETAINED_LIMIT_FLAG = "--Xchain-pruning-blocks-retained-limit"; private static final String CHAIN_PRUNING_FREQUENCY_FLAG = "--Xchain-pruning-frequency"; - /** The constant DEFAULT_CHAIN_DATA_PRUNING_MIN_BLOCKS_RETAINED. */ - public static final long DEFAULT_CHAIN_DATA_PRUNING_MIN_BLOCKS_RETAINED = 7200; - /** * The "CHAIN_DATA_PRUNING_MIN_BLOCKS_RETAINED_LIMIT" field sets the minimum limit for the * "DEFAULT_CHAIN_DATA_PRUNING_MIN_BLOCKS_RETAINED" value. For most networks, the default value of @@ -57,11 +54,10 @@ public class ChainPruningOptions implements CLIOptions hidden = true, names = {CHAIN_PRUNING_BLOCKS_RETAINED_FLAG}, description = - "The number of recent blocks for which to keep the chain data. Must be >= " + "The number of recent blocks for which to keep the chain data. Should be >= " + CHAIN_DATA_PRUNING_MIN_BLOCKS_RETAINED_LIMIT + " (default: ${DEFAULT-VALUE})") - private final Long chainDataPruningBlocksRetained = - DEFAULT_CHAIN_DATA_PRUNING_MIN_BLOCKS_RETAINED; + private final Long chainDataPruningBlocksRetained = CHAIN_DATA_PRUNING_MIN_BLOCKS_RETAINED_LIMIT; @CommandLine.Option( hidden = true, diff --git a/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java index 039d550e747..c08940ab36a 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java @@ -662,7 +662,7 @@ public BesuController build() { final SyncState syncState = new SyncState(blockchain, ethPeers, fullSyncDisabled, checkpoint); if (chainPrunerConfiguration.getChainPruningEnabled()) { - final ChainDataPruner chainDataPruner = createChainPruner(syncState, blockchainStorage); + final ChainDataPruner chainDataPruner = createChainPruner(blockchainStorage); blockchain.observeBlockAdded(chainDataPruner); LOG.info( "Chain data pruning enabled with recent blocks retained to be: " @@ -1069,8 +1069,7 @@ yield new ForestWorldStateArchive( }; } - private ChainDataPruner createChainPruner( - final SyncState syncState, final BlockchainStorage blockchainStorage) { + private ChainDataPruner createChainPruner(final BlockchainStorage blockchainStorage) { return new ChainDataPruner( blockchainStorage, new ChainDataPrunerStorage( @@ -1078,7 +1077,6 @@ private ChainDataPruner createChainPruner( KeyValueSegmentIdentifier.CHAIN_PRUNER_STATE)), chainPrunerConfiguration.getChainPruningBlocksRetained(), chainPrunerConfiguration.getChainPruningBlocksFrequency(), - syncState::isInitialSyncPhaseDone, MonitoredExecutors.newBoundedThreadPool( ChainDataPruner.class.getSimpleName(), 1, diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/ChainDataPruner.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/ChainDataPruner.java index df32281dab9..7807786948d 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/ChainDataPruner.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/ChainDataPruner.java @@ -20,7 +20,6 @@ import java.util.Collection; import java.util.concurrent.ExecutorService; -import java.util.function.Supplier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,29 +32,22 @@ public class ChainDataPruner implements BlockAddedObserver { private final long blocksToRetain; private final long pruningFrequency; private final ExecutorService pruningExecutor; - private final Supplier isInitialSyncPhaseDoneSupplier; public ChainDataPruner( final BlockchainStorage blockchainStorage, final ChainDataPrunerStorage prunerStorage, final long blocksToRetain, final long pruningFrequency, - final Supplier isInitialSyncPhaseDoneSupplier, final ExecutorService pruningExecutor) { this.blockchainStorage = blockchainStorage; this.prunerStorage = prunerStorage; this.blocksToRetain = blocksToRetain; this.pruningFrequency = pruningFrequency; - this.isInitialSyncPhaseDoneSupplier = isInitialSyncPhaseDoneSupplier; this.pruningExecutor = pruningExecutor; } @Override public void onBlockAdded(final BlockAddedEvent event) { - if (!isInitialSyncPhaseDoneSupplier.get()) { - // not run block pruning because the initial synchronization is still in progress. - return; - } final long blockNumber = event.getBlock().getHeader().getNumber(); final long storedPruningMark = prunerStorage.getPruningMark().orElse(blockNumber); if (blockNumber < storedPruningMark) { diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/chain/ChainDataPrunerTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/chain/ChainDataPrunerTest.java index 5df898c6563..e83abe29b4b 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/chain/ChainDataPrunerTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/chain/ChainDataPrunerTest.java @@ -48,7 +48,6 @@ public void singleChainPruning() { new ChainDataPrunerStorage(new InMemoryKeyValueStorage()), 512, 0, - () -> true, // Set to 'true' to indicate that the initial synchronization phase has // completed new BlockingExecutor()); Block genesisBlock = gen.genesisBlock(); @@ -88,7 +87,6 @@ public void forkPruning() { new ChainDataPrunerStorage(new InMemoryKeyValueStorage()), 512, 0, - () -> true, // Set to 'true' to indicate that the initial synchronization phase has // completed new BlockingExecutor()); Block genesisBlock = gen.genesisBlock(); @@ -135,7 +133,6 @@ public void disablePruningWhenInitialSyncPhaseRunning() { new ChainDataPrunerStorage(new InMemoryKeyValueStorage()), 512, 0, - () -> false, // Set to 'false' to indicate that the initial synchronization phase is // running. new BlockingExecutor()); Block genesisBlock = gen.genesisBlock();