Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1280,7 +1280,8 @@ private Optional<SnapProtocolManager> createSnapProtocolManager(
ethScheduler,
protocolSchedule,
protocolContext,
synchronizer));
synchronizer,
syncConfig.getSyncMode()));
}

WorldStateArchive createWorldStateArchive(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.hyperledger.besu.ethereum.eth.manager.EthScheduler;
import org.hyperledger.besu.ethereum.eth.messages.snap.SnapV1;
import org.hyperledger.besu.ethereum.eth.messages.snap.SnapV2;
import org.hyperledger.besu.ethereum.eth.sync.SyncMode;
import org.hyperledger.besu.ethereum.eth.sync.snapsync.SnapSyncConfiguration;
import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule;
import org.hyperledger.besu.ethereum.p2p.network.ProtocolManager;
Expand Down Expand Up @@ -64,22 +65,35 @@ public SnapProtocolManager(
final EthScheduler ethScheduler,
final ProtocolSchedule protocolSchedule,
final ProtocolContext protocolContext,
final Synchronizer synchronizer) {
final Synchronizer synchronizer,
final SyncMode syncMode) {
this.ethPeers = ethPeers;
this.snapMessages = snapMessages;
this.ethScheduler = ethScheduler;
this.supportedCapabilities = calculateCapabilities(protocolSchedule);
this.supportedCapabilities = calculateCapabilities(protocolSchedule, snapConfig, syncMode);
new SnapServer(
snapConfig, snapMessages, worldStateStorageCoordinator, protocolContext, synchronizer);
}

private List<Capability> calculateCapabilities(final ProtocolSchedule protocolSchedule) {
private List<Capability> calculateCapabilities(
final ProtocolSchedule protocolSchedule,
final SnapSyncConfiguration snapConfig,
final SyncMode syncMode) {
if (!snapConfig.isSnapServerEnabled() && syncMode != SyncMode.SNAP) {
LOG.debug("snap/1 not advertised: snap server disabled and snap sync not active");
return ImmutableList.of();
}
if (!snapConfig.isSnapServerEnabled()) {
LOG.warn(
"Advertising snap/1 capability for snap sync client, but {} is false: "
+ "this node will not serve snap data to peers",
"--snapsync-server-enabled");
}
final ImmutableList.Builder<Capability> capabilities = ImmutableList.builder();
capabilities.add(SnapProtocol.SNAP1);
if (protocolSchedule.anyMatch(spec -> spec.spec().isBlockAccessListEnabled())) {
capabilities.add(SnapProtocol.SNAP2);
}

return capabilities.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.hyperledger.besu.ethereum.eth.manager.EthPeers;
import org.hyperledger.besu.ethereum.eth.manager.EthScheduler;
import org.hyperledger.besu.ethereum.eth.manager.MockPeerConnection;
import org.hyperledger.besu.ethereum.eth.sync.SyncMode;
import org.hyperledger.besu.ethereum.eth.sync.snapsync.SnapSyncConfiguration;
import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule;
import org.hyperledger.besu.ethereum.p2p.rlpx.wire.DefaultMessage;
Expand Down Expand Up @@ -72,7 +73,8 @@ void setUp() {
ethScheduler,
protocolSchedule,
protocolContext,
synchronizer);
synchronizer,
SyncMode.SNAP);
}

@Test
Expand Down