Skip to content

Commit b6a09cd

Browse files
authored
revert "7536 use head for snap sync (#7718)" (#7767)
This reverts commit a7e1f6a. Signed-off-by: Simon Dudley <[email protected]>
1 parent 5330e5a commit b6a09cd

File tree

12 files changed

+133
-407
lines changed

12 files changed

+133
-407
lines changed

CHANGELOG.md

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
- Interrupt pending transaction processing on block creation timeout [#7673](https://github.com/hyperledger/besu/pull/7673)
3030
- Align gas cap calculation for transaction simulation to Geth approach [#7703](https://github.com/hyperledger/besu/pull/7703)
3131
- Expose chainId in the `BlockchainService` [7702](https://github.com/hyperledger/besu/pull/7702)
32-
- Add `--Xsnapsync-to-head-enabled` feature to use head block instead of safe block for snap sync [7536](https://github.com/hyperledger/besu/issues/7536)
3332
- Add support for `chainId` in `CallParameters` [#7720](https://github.com/hyperledger/besu/pull/7720)
3433
- Add `--ephemery` network support for Ephemery Testnet [#7563](https://github.com/hyperledger/besu/pull/7563) thanks to [@gconnect](https://github.com/gconnect)
3534
- Add configuration of Consolidation Request Contract Address via genesis configuration [#7647](https://github.com/hyperledger/besu/pull/7647)

besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java

-1
Original file line numberDiff line numberDiff line change
@@ -2739,7 +2739,6 @@ && getDataStorageConfiguration().getBonsaiLimitTrieLogsEnabled()) {
27392739

27402740
builder.setSnapServerEnabled(this.unstableSynchronizerOptions.isSnapsyncServerEnabled());
27412741
builder.setSnapSyncBftEnabled(this.unstableSynchronizerOptions.isSnapSyncBftEnabled());
2742-
builder.setSnapSyncToHeadEnabled(this.unstableSynchronizerOptions.isSnapSyncToHeadEnabled());
27432742

27442743
builder.setTxPoolImplementation(buildTransactionPoolConfiguration().getTxPoolImplementation());
27452744
builder.setWorldStateUpdateMode(unstableEvmOptions.toDomainObject().worldUpdaterMode());

besu/src/main/java/org/hyperledger/besu/cli/ConfigurationOverviewBuilder.java

-17
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ public class ConfigurationOverviewBuilder {
5858
private Integer trieLogsPruningWindowSize = null;
5959
private boolean isSnapServerEnabled = false;
6060
private boolean isSnapSyncBftEnabled = false;
61-
private boolean isSnapSyncToHeadEnabled = true;
6261
private TransactionPoolConfiguration.Implementation txPoolImplementation;
6362
private EvmConfiguration.WorldUpdaterMode worldStateUpdateMode;
6463
private Map<String, String> environment;
@@ -258,18 +257,6 @@ public ConfigurationOverviewBuilder setSnapSyncBftEnabled(final boolean snapSync
258257
return this;
259258
}
260259

261-
/**
262-
* Sets snap sync to head enabled/disabled
263-
*
264-
* @param snapSyncToHeadEnabled bool to indicate if snap sync to head is enabled
265-
* @return the builder
266-
*/
267-
public ConfigurationOverviewBuilder setSnapSyncToHeadEnabled(
268-
final boolean snapSyncToHeadEnabled) {
269-
isSnapSyncToHeadEnabled = snapSyncToHeadEnabled;
270-
return this;
271-
}
272-
273260
/**
274261
* Sets trie logs pruning window size
275262
*
@@ -402,10 +389,6 @@ public String build() {
402389
lines.add("Experimental Snap Sync for BFT enabled");
403390
}
404391

405-
if (isSnapSyncToHeadEnabled) {
406-
lines.add("Snap Sync to Head enabled");
407-
}
408-
409392
if (isBonsaiLimitTrieLogsEnabled) {
410393
final StringBuilder trieLogPruningString = new StringBuilder();
411394
trieLogPruningString

besu/src/main/java/org/hyperledger/besu/cli/options/unstable/SynchronizerOptions.java

+1-25
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ public class SynchronizerOptions implements CLIOptions<SynchronizerConfiguration
8787

8888
private static final String SNAP_SYNC_BFT_ENABLED_FLAG = "--Xsnapsync-bft-enabled";
8989

90-
private static final String SNAP_SYNC_TO_HEAD_ENABLED_FLAG = "--Xsnapsync-to-head-enabled";
91-
9290
/**
9391
* Parse block propagation range.
9492
*
@@ -316,15 +314,6 @@ public void parseBlockPropagationRange(final String arg) {
316314
description = "Snap sync enabled for BFT chains (default: ${DEFAULT-VALUE})")
317315
private Boolean snapsyncBftEnabled = SnapSyncConfiguration.DEFAULT_SNAP_SYNC_BFT_ENABLED;
318316

319-
@CommandLine.Option(
320-
names = SNAP_SYNC_TO_HEAD_ENABLED_FLAG,
321-
hidden = true,
322-
paramLabel = "<Boolean>",
323-
arity = "0..1",
324-
description = "Snap sync to head enabled (default: ${DEFAULT-VALUE})")
325-
private Boolean snapsyncToHeadEnabled =
326-
SnapSyncConfiguration.DEFAULT_SNAP_SYNC_TO_HEAD_ENABLED_FLAG;
327-
328317
@CommandLine.Option(
329318
names = {"--Xpeertask-system-enabled"},
330319
hidden = true,
@@ -352,15 +341,6 @@ public boolean isSnapSyncBftEnabled() {
352341
return snapsyncBftEnabled;
353342
}
354343

355-
/**
356-
* Flag to know if Snap sync should sync to head instead of safe block
357-
*
358-
* @return true if snap sync should sync to head
359-
*/
360-
public boolean isSnapSyncToHeadEnabled() {
361-
return snapsyncToHeadEnabled;
362-
}
363-
364344
/**
365345
* Flag to indicate whether the peer task system should be used where available
366346
*
@@ -421,7 +401,6 @@ public static SynchronizerOptions fromConfig(final SynchronizerConfiguration con
421401
options.checkpointPostMergeSyncEnabled = config.isCheckpointPostMergeEnabled();
422402
options.snapsyncServerEnabled = config.getSnapSyncConfiguration().isSnapServerEnabled();
423403
options.snapsyncBftEnabled = config.getSnapSyncConfiguration().isSnapSyncBftEnabled();
424-
options.snapsyncToHeadEnabled = config.getSnapSyncConfiguration().isSnapSyncToHeadEnabled();
425404
return options;
426405
}
427406

@@ -455,7 +434,6 @@ public SynchronizerConfiguration.Builder toDomainObject() {
455434
.localFlatStorageCountToHealPerRequest(snapsyncFlatStorageHealedCountPerRequest)
456435
.isSnapServerEnabled(snapsyncServerEnabled)
457436
.isSnapSyncBftEnabled(snapsyncBftEnabled)
458-
.isSnapSyncToHeadEnabled(snapsyncToHeadEnabled)
459437
.build());
460438
builder.checkpointPostMergeEnabled(checkpointPostMergeSyncEnabled);
461439
builder.isPeerTaskSystemEnabled(isPeerTaskSystemEnabled);
@@ -515,9 +493,7 @@ public List<String> getCLIOptions() {
515493
SNAP_SERVER_ENABLED_FLAG,
516494
OptionParser.format(snapsyncServerEnabled),
517495
SNAP_SYNC_BFT_ENABLED_FLAG,
518-
OptionParser.format(snapsyncBftEnabled),
519-
SNAP_SYNC_TO_HEAD_ENABLED_FLAG,
520-
OptionParser.format(snapsyncToHeadEnabled));
496+
OptionParser.format(snapsyncBftEnabled));
521497
return value;
522498
}
523499
}

besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java

+8-22
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
import org.hyperledger.besu.ethereum.eth.sync.PivotBlockSelector;
6666
import org.hyperledger.besu.ethereum.eth.sync.SyncMode;
6767
import org.hyperledger.besu.ethereum.eth.sync.SynchronizerConfiguration;
68-
import org.hyperledger.besu.ethereum.eth.sync.fastsync.PivotSelectorFromHeadBlock;
6968
import org.hyperledger.besu.ethereum.eth.sync.fastsync.PivotSelectorFromPeers;
7069
import org.hyperledger.besu.ethereum.eth.sync.fastsync.PivotSelectorFromSafeBlock;
7170
import org.hyperledger.besu.ethereum.eth.sync.fastsync.checkpoint.Checkpoint;
@@ -891,27 +890,14 @@ private PivotBlockSelector createPivotSelector(
891890
LOG.info("Initial sync done, unsubscribe forkchoice supplier");
892891
};
893892

894-
if (syncConfig.getSnapSyncConfiguration().isSnapSyncToHeadEnabled()) {
895-
LOG.info("Using head block for sync.");
896-
return new PivotSelectorFromHeadBlock(
897-
protocolContext,
898-
protocolSchedule,
899-
ethContext,
900-
metricsSystem,
901-
genesisConfigOptions,
902-
unverifiedForkchoiceSupplier,
903-
unsubscribeForkchoiceListener);
904-
} else {
905-
LOG.info("Using safe block for sync.");
906-
return new PivotSelectorFromSafeBlock(
907-
protocolContext,
908-
protocolSchedule,
909-
ethContext,
910-
metricsSystem,
911-
genesisConfigOptions,
912-
unverifiedForkchoiceSupplier,
913-
unsubscribeForkchoiceListener);
914-
}
893+
return new PivotSelectorFromSafeBlock(
894+
protocolContext,
895+
protocolSchedule,
896+
ethContext,
897+
metricsSystem,
898+
genesisConfigOptions,
899+
unverifiedForkchoiceSupplier,
900+
unsubscribeForkchoiceListener);
915901
} else {
916902
LOG.info("TTD difficulty is not present, creating initial sync phase for PoW");
917903
return new PivotSelectorFromPeers(ethContext, syncConfig, syncState, metricsSystem);

besu/src/test/java/org/hyperledger/besu/controller/MergeBesuControllerBuilderTest.java

+1-38
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@
4545
import org.hyperledger.besu.ethereum.core.PrivacyParameters;
4646
import org.hyperledger.besu.ethereum.eth.EthProtocolConfiguration;
4747
import org.hyperledger.besu.ethereum.eth.sync.SynchronizerConfiguration;
48-
import org.hyperledger.besu.ethereum.eth.sync.fastsync.PivotSelectorFromHeadBlock;
49-
import org.hyperledger.besu.ethereum.eth.sync.fastsync.PivotSelectorFromSafeBlock;
5048
import org.hyperledger.besu.ethereum.eth.transactions.TransactionPoolConfiguration;
5149
import org.hyperledger.besu.ethereum.mainnet.MainnetBlockHeaderFunctions;
5250
import org.hyperledger.besu.ethereum.mainnet.feemarket.BaseFeeMarket;
@@ -76,15 +74,12 @@
7674
import org.apache.tuweni.bytes.Bytes;
7775
import org.apache.tuweni.bytes.Bytes32;
7876
import org.apache.tuweni.units.bigints.UInt256;
79-
import org.junit.jupiter.api.Assertions;
8077
import org.junit.jupiter.api.BeforeEach;
8178
import org.junit.jupiter.api.Test;
8279
import org.junit.jupiter.api.extension.ExtendWith;
8380
import org.junit.jupiter.api.io.TempDir;
8481
import org.mockito.Answers;
8582
import org.mockito.Mock;
86-
import org.mockito.MockedConstruction;
87-
import org.mockito.Mockito;
8883
import org.mockito.junit.jupiter.MockitoExtension;
8984

9085
@ExtendWith(MockitoExtension.class)
@@ -95,10 +90,7 @@ public class MergeBesuControllerBuilderTest {
9590

9691
@Mock GenesisConfigFile genesisConfigFile;
9792
@Mock GenesisConfigOptions genesisConfigOptions;
98-
99-
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
100-
SynchronizerConfiguration synchronizerConfiguration;
101-
93+
@Mock SynchronizerConfiguration synchronizerConfiguration;
10294
@Mock EthProtocolConfiguration ethProtocolConfiguration;
10395
@Mock CheckpointConfigOptions checkpointConfigOptions;
10496

@@ -154,9 +146,6 @@ public void setup() {
154146
lenient().when(synchronizerConfiguration.getDownloaderParallelism()).thenReturn(1);
155147
lenient().when(synchronizerConfiguration.getTransactionsParallelism()).thenReturn(1);
156148
lenient().when(synchronizerConfiguration.getComputationParallelism()).thenReturn(1);
157-
lenient()
158-
.when(synchronizerConfiguration.getSnapSyncConfiguration().isSnapSyncToHeadEnabled())
159-
.thenReturn(false);
160149

161150
lenient()
162151
.when(synchronizerConfiguration.getBlockPropagationRange())
@@ -302,32 +291,6 @@ public void assertFinalizedBlockIsPresentWhenStored() {
302291
assertThat(mergeContext.getFinalized().get()).isEqualTo(finalizedHeader);
303292
}
304293

305-
@Test
306-
public void assertPivotSelectorFromSafeBlockIsCreated() {
307-
MockedConstruction<PivotSelectorFromSafeBlock> mocked =
308-
Mockito.mockConstruction(PivotSelectorFromSafeBlock.class);
309-
lenient()
310-
.when(synchronizerConfiguration.getSnapSyncConfiguration().isSnapSyncToHeadEnabled())
311-
.thenReturn(false);
312-
313-
visitWithMockConfigs(new MergeBesuControllerBuilder()).build();
314-
315-
Assertions.assertEquals(1, mocked.constructed().size());
316-
}
317-
318-
@Test
319-
public void assertPivotSelectorFromHeadBlockIsCreated() {
320-
MockedConstruction<PivotSelectorFromHeadBlock> mocked =
321-
Mockito.mockConstruction(PivotSelectorFromHeadBlock.class);
322-
lenient()
323-
.when(synchronizerConfiguration.getSnapSyncConfiguration().isSnapSyncToHeadEnabled())
324-
.thenReturn(true);
325-
326-
visitWithMockConfigs(new MergeBesuControllerBuilder()).build();
327-
328-
Assertions.assertEquals(1, mocked.constructed().size());
329-
}
330-
331294
private BlockHeader finalizedBlockHeader() {
332295
final long blockNumber = 42;
333296
final Hash magicHash = Hash.wrap(Bytes32.leftPad(Bytes.ofUnsignedInt(42)));

0 commit comments

Comments
 (0)