From ae7a76a1754e08aac59438d0c5c226efb8e09dfd Mon Sep 17 00:00:00 2001 From: Sam Kleinman Date: Fri, 7 Jan 2022 13:28:23 -0500 Subject: [PATCH] evidence: reactor constructor (#7533) --- internal/evidence/reactor.go | 12 +++++++++--- internal/evidence/reactor_test.go | 11 +++++++++-- node/setup.go | 13 ++++++------- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/internal/evidence/reactor.go b/internal/evidence/reactor.go index 385308884..8fb7bece5 100644 --- a/internal/evidence/reactor.go +++ b/internal/evidence/reactor.go @@ -61,11 +61,17 @@ type Reactor struct { // service.Service interface. It accepts a p2p Channel dedicated for handling // envelopes with EvidenceList messages. func NewReactor( + ctx context.Context, logger log.Logger, - evidenceCh *p2p.Channel, + chCreator p2p.ChannelCreator, peerUpdates *p2p.PeerUpdates, evpool *Pool, -) *Reactor { +) (*Reactor, error) { + evidenceCh, err := chCreator(ctx, GetChannelDescriptor()) + if err != nil { + return nil, err + } + r := &Reactor{ logger: logger, evpool: evpool, @@ -75,7 +81,7 @@ func NewReactor( } r.BaseService = *service.NewBaseService(logger, "Evidence", r) - return r + return r, err } // OnStart starts separate go routines for each p2p Channel and listens for diff --git a/internal/evidence/reactor_test.go b/internal/evidence/reactor_test.go index 21a0be901..21cf8139a 100644 --- a/internal/evidence/reactor_test.go +++ b/internal/evidence/reactor_test.go @@ -89,10 +89,17 @@ func setup(ctx context.Context, t *testing.T, stateStores []sm.Store, chBuf uint rts.network.Nodes[nodeID].PeerManager.Register(ctx, rts.peerUpdates[nodeID]) rts.nodes = append(rts.nodes, rts.network.Nodes[nodeID]) - rts.reactors[nodeID] = evidence.NewReactor(logger, - rts.evidenceChannels[nodeID], + chCreator := func(ctx context.Context, chdesc *p2p.ChannelDescriptor) (*p2p.Channel, error) { + return rts.evidenceChannels[nodeID], nil + } + + rts.reactors[nodeID], err = evidence.NewReactor( + ctx, + logger, + chCreator, rts.peerUpdates[nodeID], rts.pools[nodeID]) + require.NoError(t, err) require.NoError(t, rts.reactors[nodeID].Start(ctx)) require.True(t, rts.reactors[nodeID].IsRunning()) diff --git a/node/setup.go b/node/setup.go index d3feba772..e83af95c9 100644 --- a/node/setup.go +++ b/node/setup.go @@ -229,17 +229,16 @@ func createEvidenceReactor( return nil, nil, fmt.Errorf("creating evidence pool: %w", err) } - ch, err := router.OpenChannel(ctx, evidence.GetChannelDescriptor()) - if err != nil { - return nil, nil, fmt.Errorf("creating evidence channel: %w", err) - } - - evidenceReactor := evidence.NewReactor( + evidenceReactor, err := evidence.NewReactor( + ctx, logger, - ch, + router.OpenChannel, peerManager.Subscribe(ctx), evidencePool, ) + if err != nil { + return nil, nil, fmt.Errorf("creating evidence reactor: %w", err) + } return evidenceReactor, evidencePool, nil }