Skip to content

Commit 3f0dd91

Browse files
refactor: P2P module gets PeerstoreProvider from the bus
1 parent 94d7887 commit 3f0dd91

1 file changed

Lines changed: 28 additions & 20 deletions

File tree

p2p/module.go

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,8 @@ type p2pModule struct {
4646
identity libp2p.Option
4747
listenAddrs libp2p.Option
4848

49-
// TECHDEBT(#810): register the providers to the module registry instead of
50-
// holding a reference in the module struct and passing via router config.
51-
//
5249
// Assigned during creation via `#setupDependencies()`.
53-
pstoreProvider providers.PeerstoreProvider
54-
nonceDeduper *mempool.GenericFIFOSet[uint64, uint64]
50+
nonceDeduper *mempool.GenericFIFOSet[uint64, uint64]
5551

5652
// TECHDEBT(#810): register the routers to the module registry instead of
5753
// holding a reference in the module struct. This will improve testability.
@@ -300,28 +296,20 @@ func (m *p2pModule) setupPeerstoreProvider() error {
300296
GetModulesRegistry().
301297
GetModule(peerstore_provider.PeerstoreProviderSubmoduleName)
302298
if err != nil {
299+
// TECHDEBT: compare against `runtime.ErrModuleNotRegistered(...)`.
303300
m.logger.Debug().Msg("creating new persistence peerstore...")
304-
pstoreProvider, err := persPSP.Create(m.GetBus())
301+
// Ensure a peerstore provider exists by creating a `persistencePeerstoreProvider`.
302+
_, err := persPSP.Create(m.GetBus())
305303
if err != nil {
306304
return err
307305
}
308-
309-
// TECHDEBT(#810, #811): use `bus.GetPeerstoreProvider()` after peerstore provider
310-
// is retrievable as a proper submodule
311-
m.pstoreProvider = pstoreProvider
312306
return nil
313307
}
314308

315-
m.logger.Debug().Msg("loaded persistence peerstore...")
316-
pstoreProvider, ok := pstoreProviderModule.(providers.PeerstoreProvider)
317-
if !ok {
309+
m.logger.Debug().Msg("loaded peerstore provider...")
310+
if _, ok := pstoreProviderModule.(providers.PeerstoreProvider); !ok {
318311
return fmt.Errorf("unknown peerstore provider type: %T", pstoreProviderModule)
319312
}
320-
321-
// TECHDEBT(#810): register the provider to the module registry instead of
322-
// holding a reference in the module struct and passing via router config.
323-
m.pstoreProvider = pstoreProvider
324-
325313
return nil
326314
}
327315

@@ -521,11 +509,31 @@ func (m *p2pModule) getMultiaddr() (multiaddr.Multiaddr, error) {
521509
}
522510

523511
func (m *p2pModule) getStakedPeerstore() (typesP2P.Peerstore, error) {
524-
return m.pstoreProvider.GetStakedPeerstoreAtHeight(
525-
m.currentHeightProvider.CurrentHeight(),
512+
pstoreProvider, err := m.getPeerstoreProvider()
513+
if err != nil {
514+
return nil, err
515+
}
516+
517+
return pstoreProvider.GetStakedPeerstoreAtHeight(
518+
m.GetBus().GetCurrentHeightProvider().CurrentHeight(),
526519
)
527520
}
528521

522+
// TECHDEBT(#810, #811): replace with `bus.GetPeerstoreProvider()` once available.
523+
func (m *p2pModule) getPeerstoreProvider() (peerstore_provider.PeerstoreProvider, error) {
524+
pstoreProviderModule, err := m.GetBus().
525+
GetModulesRegistry().
526+
GetModule(peerstore_provider.PeerstoreProviderSubmoduleName)
527+
if err != nil {
528+
return nil, err
529+
}
530+
pstoreProvider, ok := pstoreProviderModule.(peerstore_provider.PeerstoreProvider)
531+
if !ok {
532+
return nil, fmt.Errorf("peerstore provider not available")
533+
}
534+
return pstoreProvider, nil
535+
}
536+
529537
// isStakedActor returns whether the current node is a staked actor at the current height.
530538
// Return an error if a peerstore can't be provided.
531539
func (m *p2pModule) isStakedActor() (bool, error) {

0 commit comments

Comments
 (0)