Skip to content

Commit c02ca0c

Browse files
committed
go/worker/storage/committee: Factor out checkpointer creation
1 parent 490a54d commit c02ca0c

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

go/worker/storage/committee/node.go

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)