Skip to content

Commit c7412b6

Browse files
bryanchriswhitedylanlottOlshanskDaniel Olshansky
authored
chore: introduce Submodule interface (#855)
## Description Introduces the `Submodule` interface and applies it to the P2P module's peerstore provider. ## Issue Deliverables 1, 2, 3, & 5: - #810 ## Type of change Please mark the relevant option(s): - [ ] New feature, functionality or library - [ ] Bug fix - [x] Code health or cleanup - [ ] Major breaking change - [x] Documentation - [ ] Other <!-- add details here if it a different type of change --> ## List of changes * fixed typo; renamee `IntegratableModule` to `IntegrableModule` * renamed `InitializableModule` to `InjectableModule` * removed `InjectableModule#Create()` as `Moudle` also embeds `ModuleFactoryWithConfig` * added `Submodule` interface type * refactored peerstore providers as submodules * updated module README ## Testing - [x] `make develop_test`; if any code changes were made - [x] `make test_e2e` on [k8s LocalNet](https://github.com/pokt-network/pocket/blob/main/build/localnet/README.md); if any code changes were made - [x] `e2e-devnet-test` passes tests on [DevNet](https://pocketnetwork.notion.site/How-to-DevNet-ff1598f27efe44c09f34e2aa0051f0dd); if any code was changed - [ ] [Docker Compose LocalNet](https://github.com/pokt-network/pocket/blob/main/docs/development/README.md); if any major functionality was changed or introduced - [x] [k8s LocalNet](https://github.com/pokt-network/pocket/blob/main/build/localnet/README.md); if any infrastructure or configuration changes were made ## Required Checklist - [x] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added, or updated, [`godoc` format comments](https://go.dev/blog/godoc) on touched members (see: [tip.golang.org/doc/comment](https://tip.golang.org/doc/comment)) - [ ] I have tested my changes using the available tooling - [ ] I have updated the corresponding CHANGELOG ### If Applicable Checklist - [x] I have updated the corresponding README(s); local and/or global - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have added, or updated, [mermaid.js](https://mermaid-js.github.io) diagrams in the corresponding README(s) - [ ] I have added, or updated, documentation and [mermaid.js](https://mermaid-js.github.io) diagrams in `shared/docs/*` if I updated `shared/*`README(s) --------- Co-authored-by: d7t <[email protected]> Co-authored-by: @olshansky <[email protected]> Co-authored-by: Daniel Olshansky <[email protected]> Co-authored-by: Daniel Olshansky <[email protected]>
1 parent 6b875ee commit c7412b6

46 files changed

Lines changed: 488 additions & 159 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/client/cli/debug.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,9 @@ func fetchPeerstore(cmd *cobra.Command) (typesP2P.Peerstore, error) {
228228
return nil, errors.New("retrieving bus from CLI context")
229229
}
230230
modulesRegistry := bus.GetModulesRegistry()
231-
pstoreProvider, err := modulesRegistry.GetModule(peerstore_provider.ModuleName)
231+
// TECHDEBT(#810, #811): use `bus.GetPeerstoreProvider()` after peerstore provider
232+
// is retrievable as a proper submodule
233+
pstoreProvider, err := modulesRegistry.GetModule(peerstore_provider.PeerstoreProviderSubmoduleName)
232234
if err != nil {
233235
return nil, errors.New("retrieving peerstore provider")
234236
}

app/client/cli/helpers/setup.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,26 @@ func P2PDependenciesPreRunE(cmd *cobra.Command, _ []string) error {
2727
bus := runtimeMgr.GetBus()
2828
SetValueInCLIContext(cmd, BusCLICtxKey, bus)
2929

30-
setupPeerstoreProvider(*runtimeMgr, flags.RemoteCLIURL)
30+
if err := setupPeerstoreProvider(*runtimeMgr, flags.RemoteCLIURL); err != nil {
31+
return err
32+
}
3133
setupCurrentHeightProvider(*runtimeMgr, flags.RemoteCLIURL)
3234
setupAndStartP2PModule(*runtimeMgr)
3335

3436
return nil
3537
}
3638

37-
func setupPeerstoreProvider(rm runtime.Manager, rpcURL string) {
38-
bus := rm.GetBus()
39-
modulesRegistry := bus.GetModulesRegistry()
40-
pstoreProvider := rpcPSP.Create(
41-
rpcPSP.WithP2PConfig(rm.GetConfig().P2P),
42-
rpcPSP.WithCustomRPCURL(rpcURL),
43-
)
44-
modulesRegistry.RegisterModule(pstoreProvider)
39+
func setupPeerstoreProvider(rm runtime.Manager, rpcURL string) error {
40+
// Ensure `PeerstoreProvider` exists in the modules registry.
41+
if _, err := rpcPSP.Create(rm.GetBus(), rpcPSP.WithCustomRPCURL(rpcURL)); err != nil {
42+
return err
43+
}
44+
return nil
4545
}
4646

4747
func setupCurrentHeightProvider(rm runtime.Manager, rpcURL string) {
48+
// TECHDEBT(#810): simplify after current height provider is refactored as
49+
// a submodule.
4850
bus := rm.GetBus()
4951
modulesRegistry := bus.GetModulesRegistry()
5052
currentHeightProvider := rpcCHP.NewRPCCurrentHeightProvider(

consensus/events.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"github.com/pokt-network/pocket/shared/messaging"
55
)
66

7-
// publishNewHeightEvent publishes a new height event to the bus so that other interested IntegratableModules can react to it if necessary
7+
// publishNewHeightEvent publishes a new height event to the bus so that other interested IntegrableModules can react to it if necessary
88
func (m *consensusModule) publishNewHeightEvent(height uint64) {
99
newHeightEvent, err := messaging.PackMessage(&messaging.ConsensusNewHeightEvent{Height: height})
1010
if err != nil {

consensus/leader_election/module.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type LeaderElectionModule interface {
1414
var _ LeaderElectionModule = &leaderElectionModule{}
1515

1616
type leaderElectionModule struct {
17-
base_modules.IntegratableModule
17+
base_modules.IntegrableModule
1818
base_modules.InterruptableModule
1919
}
2020

consensus/module.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const (
3131
)
3232

3333
type consensusModule struct {
34-
base_modules.IntegratableModule
34+
base_modules.IntegrableModule
3535

3636
privateKey cryptoPocket.Ed25519PrivateKey
3737

@@ -209,7 +209,7 @@ func (m *consensusModule) GetModuleName() string {
209209
}
210210

211211
func (m *consensusModule) SetBus(pocketBus modules.Bus) {
212-
m.IntegratableModule.SetBus(pocketBus)
212+
m.IntegrableModule.SetBus(pocketBus)
213213
if m.paceMaker != nil {
214214
m.paceMaker.SetBus(pocketBus)
215215
}

consensus/pacemaker/module.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ type Pacemaker interface {
4545
}
4646

4747
type pacemaker struct {
48-
base_modules.IntegratableModule
48+
base_modules.IntegrableModule
4949
base_modules.InterruptableModule
5050

5151
pacemakerCfg *configs.PacemakerConfig

ibc/module.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
var _ modules.IBCModule = &ibcModule{}
1212

1313
type ibcModule struct {
14-
base_modules.IntegratableModule
14+
base_modules.IntegrableModule
1515

1616
cfg *configs.IBCConfig
1717
logger *modules.Logger

logger/module.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
var _ modules.Module = &loggerModule{}
1515

1616
type loggerModule struct {
17-
base_modules.IntegratableModule
17+
base_modules.IntegrableModule
1818
base_modules.InterruptableModule
1919

2020
zerolog.Logger

p2p/background/router.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,16 @@ import (
2727
)
2828

2929
var (
30-
_ typesP2P.Router = &backgroundRouter{}
31-
_ modules.IntegratableModule = &backgroundRouter{}
32-
_ backgroundRouterFactory = &backgroundRouter{}
30+
_ typesP2P.Router = &backgroundRouter{}
31+
_ modules.IntegrableModule = &backgroundRouter{}
32+
_ backgroundRouterFactory = &backgroundRouter{}
3333
)
3434

3535
type backgroundRouterFactory = modules.FactoryWithConfig[typesP2P.Router, *config.BackgroundConfig]
3636

3737
// backgroundRouter implements `typesP2P.Router` for use with all P2P participants.
3838
type backgroundRouter struct {
39-
base_modules.IntegratableModule
39+
base_modules.IntegrableModule
4040
unicast.UnicastRouter
4141

4242
logger *modules.Logger
@@ -260,6 +260,7 @@ func (rtr *backgroundRouter) setupPeerstore(
260260
return err
261261
}
262262

263+
// TECHDEBT(#859): integrate with `p2pModule#bootstrap()`.
263264
if err := rtr.bootstrap(ctx); err != nil {
264265
return fmt.Errorf("bootstrapping peerstore: %w", err)
265266
}
@@ -318,6 +319,7 @@ func (rtr *backgroundRouter) setupSubscription() (err error) {
318319
return err
319320
}
320321

322+
// TECHDEBT(#859): integrate with `p2pModule#bootstrap()`.
321323
func (rtr *backgroundRouter) bootstrap(ctx context.Context) error {
322324
// CONSIDERATION: add `GetPeers` method, which returns a map,
323325
// to the `PeerstoreProvider` interface to simplify this loop.

p2p/bootstrap.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,13 @@ func (m *p2pModule) bootstrap() error {
5959
continue
6060
}
6161

62-
pstoreProvider := rpcABP.Create(
63-
rpcABP.WithP2PConfig(
64-
m.GetBus().GetRuntimeMgr().GetConfig().P2P,
65-
),
62+
pstoreProvider, err := rpcABP.Create(
63+
m.GetBus(),
6664
rpcABP.WithCustomRPCURL(bootstrapNode),
6765
)
66+
if err != nil {
67+
return fmt.Errorf("creating RPC peerstore provider: %w", err)
68+
}
6869

6970
currentHeightProvider := rpcCHP.NewRPCCurrentHeightProvider(rpcCHP.WithCustomRPCURL(bootstrapNode))
7071

0 commit comments

Comments
 (0)