@@ -212,8 +212,38 @@ func NewNode(
212212
213213 n .ctx , n .ctxCancel = context .WithCancel (context .Background ())
214214
215- // Create a new checkpointer. Always create a checkpointer, even if checkpointing is disabled
216- // in configuration so we can ensure that the genesis checkpoint is available.
215+ // Create a checkpointer (even if checkpointing is disabled) to ensure the genesis checkpoint is available.
216+ checkpointer , err := n .newCheckpointer (n .ctx , commonNode , localStorage )
217+ if err != nil {
218+ return nil , fmt .Errorf ("failed to create checkpointer: %w" , err )
219+ }
220+ n .checkpointer = checkpointer
221+
222+ // Register prune handler.
223+ commonNode .Runtime .History ().Pruner ().RegisterHandler (& pruneHandler {
224+ logger : n .logger ,
225+ node : n ,
226+ })
227+
228+ // Advertise and serve p2p protocols.
229+ commonNode .P2P .RegisterProtocolServer (synclegacy .NewServer (commonNode .ChainContext , commonNode .Runtime .ID (), localStorage ))
230+ commonNode .P2P .RegisterProtocolServer (diffsync .NewServer (commonNode .ChainContext , commonNode .Runtime .ID (), localStorage ))
231+ if config .GlobalConfig .Storage .Checkpointer .Enabled {
232+ commonNode .P2P .RegisterProtocolServer (checkpointsync .NewServer (commonNode .ChainContext , commonNode .Runtime .ID (), localStorage ))
233+ }
234+ if rpcRoleProvider != nil {
235+ commonNode .P2P .RegisterProtocolServer (storagePub .NewServer (commonNode .ChainContext , commonNode .Runtime .ID (), localStorage ))
236+ }
237+
238+ // Create p2p protocol clients.
239+ n .legacyStorageSync = synclegacy .NewClient (commonNode .P2P , commonNode .ChainContext , commonNode .Runtime .ID ())
240+ n .diffSync = diffsync .NewClient (commonNode .P2P , commonNode .ChainContext , commonNode .Runtime .ID ())
241+ n .checkpointSync = checkpointsync .NewClient (commonNode .P2P , commonNode .ChainContext , commonNode .Runtime .ID ())
242+
243+ return n , nil
244+ }
245+
246+ func (n * Node ) newCheckpointer (ctx context.Context , commonNode * committee.Node , localStorage storageApi.LocalBackend ) (checkpoint.Checkpointer , error ) {
217247 checkInterval := checkpoint .CheckIntervalDisabled
218248 if config .GlobalConfig .Storage .Checkpointer .Enabled {
219249 checkInterval = config .GlobalConfig .Storage .Checkpointer .CheckInterval
@@ -259,39 +289,13 @@ func NewNode(
259289 return blk .Header .StorageRoots (), nil
260290 },
261291 }
262- var err error
263- n . checkpointer , err = checkpoint .NewCheckpointer (
264- n . ctx ,
292+
293+ return checkpoint .NewCheckpointer (
294+ ctx ,
265295 localStorage .NodeDB (),
266296 localStorage .Checkpointer (),
267297 checkpointerCfg ,
268298 )
269- if err != nil {
270- return nil , fmt .Errorf ("failed to create checkpointer: %w" , err )
271- }
272-
273- // Register prune handler.
274- commonNode .Runtime .History ().Pruner ().RegisterHandler (& pruneHandler {
275- logger : n .logger ,
276- node : n ,
277- })
278-
279- // Advertise and serve p2p protocols.
280- commonNode .P2P .RegisterProtocolServer (synclegacy .NewServer (commonNode .ChainContext , commonNode .Runtime .ID (), localStorage ))
281- commonNode .P2P .RegisterProtocolServer (diffsync .NewServer (commonNode .ChainContext , commonNode .Runtime .ID (), localStorage ))
282- if checkInterval != checkpoint .CheckIntervalDisabled {
283- commonNode .P2P .RegisterProtocolServer (checkpointsync .NewServer (commonNode .ChainContext , commonNode .Runtime .ID (), localStorage ))
284- }
285- if rpcRoleProvider != nil {
286- commonNode .P2P .RegisterProtocolServer (storagePub .NewServer (commonNode .ChainContext , commonNode .Runtime .ID (), localStorage ))
287- }
288-
289- // Create p2p protocol clients.
290- n .legacyStorageSync = synclegacy .NewClient (commonNode .P2P , commonNode .ChainContext , commonNode .Runtime .ID ())
291- n .diffSync = diffsync .NewClient (commonNode .P2P , commonNode .ChainContext , commonNode .Runtime .ID ())
292- n .checkpointSync = checkpointsync .NewClient (commonNode .P2P , commonNode .ChainContext , commonNode .Runtime .ID ())
293-
294- return n , nil
295299}
296300
297301// Service interface.
0 commit comments