Skip to content

Commit 8ce7cb1

Browse files
Merge #4156
4156: Add logger to FollowerState r=janezpodhostnik a=janezpodhostnik Extracting pieces from #3736 so its easier to digest and merge. This one adds a currently unused log to follower state, to be used in the next PR. Co-authored-by: Janez Podhostnik <[email protected]>
2 parents 018512f + d8ed58c commit 8ce7cb1

File tree

19 files changed

+242
-53
lines changed

19 files changed

+242
-53
lines changed

cmd/access/node_builder/access_node_builder.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,15 @@ func (builder *FlowAccessNodeBuilder) buildFollowerState() *FlowAccessNodeBuilde
237237
return fmt.Errorf("only implementations of type badger.State are currently supported but read-only state has type %T", node.State)
238238
}
239239

240-
followerState, err := badgerState.NewFollowerState(state, node.Storage.Index, node.Storage.Payloads, node.Tracer, node.ProtocolEvents, blocktimer.DefaultBlockTimer)
240+
followerState, err := badgerState.NewFollowerState(
241+
node.Logger,
242+
node.Tracer,
243+
node.ProtocolEvents,
244+
state,
245+
node.Storage.Index,
246+
node.Storage.Payloads,
247+
blocktimer.DefaultBlockTimer,
248+
)
241249
builder.FollowerState = followerState
242250

243251
return err

cmd/collection/main.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,15 @@ func main() {
183183
if !ok {
184184
return fmt.Errorf("only implementations of type badger.State are currently supported but read-only state has type %T", node.State)
185185
}
186-
followerState, err = badgerState.NewFollowerState(state, node.Storage.Index, node.Storage.Payloads, node.Tracer, node.ProtocolEvents, blocktimer.DefaultBlockTimer)
186+
followerState, err = badgerState.NewFollowerState(
187+
node.Logger,
188+
node.Tracer,
189+
node.ProtocolEvents,
190+
state,
191+
node.Storage.Index,
192+
node.Storage.Payloads,
193+
blocktimer.DefaultBlockTimer,
194+
)
187195
return err
188196
}).
189197
Module("transactions mempool", func(node *cmd.NodeConfig) error {
@@ -229,7 +237,7 @@ func main() {
229237
return nil
230238
}).
231239
Component("machine account config validator", func(node *cmd.NodeConfig) (module.ReadyDoneAware, error) {
232-
//@TODO use fallback logic for flowClient similar to DKG/QC contract clients
240+
// @TODO use fallback logic for flowClient similar to DKG/QC contract clients
233241
flowClient, err := common.FlowClient(flowClientConfigs[0])
234242
if err != nil {
235243
return nil, fmt.Errorf("failed to get flow client connection option for access node (0): %s %w", flowClientConfigs[0].AccessAddress, err)

cmd/consensus/main.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,17 @@ func main() {
242242
return err
243243
}
244244

245-
mutableState, err = badgerState.NewFullConsensusState(state, node.Storage.Index, node.Storage.Payloads, node.Tracer, node.ProtocolEvents, blockTimer, receiptValidator, sealValidator)
245+
mutableState, err = badgerState.NewFullConsensusState(
246+
node.Logger,
247+
node.Tracer,
248+
node.ProtocolEvents,
249+
state,
250+
node.Storage.Index,
251+
node.Storage.Payloads,
252+
blockTimer,
253+
receiptValidator,
254+
sealValidator,
255+
)
246256
return err
247257
}).
248258
Module("random beacon key", func(node *cmd.NodeConfig) error {
@@ -377,7 +387,7 @@ func main() {
377387
return nil
378388
}).
379389
Component("machine account config validator", func(node *cmd.NodeConfig) (module.ReadyDoneAware, error) {
380-
//@TODO use fallback logic for flowClient similar to DKG/QC contract clients
390+
// @TODO use fallback logic for flowClient similar to DKG/QC contract clients
381391
flowClient, err := common.FlowClient(flowClientConfigs[0])
382392
if err != nil {
383393
return nil, fmt.Errorf("failed to get flow client connection option for access node (0): %s %w", flowClientConfigs[0].AccessAddress, err)

cmd/execution_builder.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,15 @@ func (exeNode *ExecutionNode) LoadMutableFollowerState(node *NodeConfig) error {
216216
return fmt.Errorf("only implementations of type badger.State are currently supported but read-only state has type %T", node.State)
217217
}
218218
var err error
219-
exeNode.followerState, err = badgerState.NewFollowerState(bState, node.Storage.Index, node.Storage.Payloads, node.Tracer, node.ProtocolEvents, blocktimer.DefaultBlockTimer)
219+
exeNode.followerState, err = badgerState.NewFollowerState(
220+
node.Logger,
221+
node.Tracer,
222+
node.ProtocolEvents,
223+
bState,
224+
node.Storage.Index,
225+
node.Storage.Payloads,
226+
blocktimer.DefaultBlockTimer,
227+
)
220228
return err
221229
}
222230

cmd/observer/node_builder/observer_builder.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,15 @@ func (builder *ObserverServiceBuilder) buildFollowerState() *ObserverServiceBuil
269269
return fmt.Errorf("only implementations of type badger.State are currently supported but read-only state has type %T", node.State)
270270
}
271271

272-
followerState, err := badgerState.NewFollowerState(state, node.Storage.Index, node.Storage.Payloads, node.Tracer, node.ProtocolEvents, blocktimer.DefaultBlockTimer)
272+
followerState, err := badgerState.NewFollowerState(
273+
node.Logger,
274+
node.Tracer,
275+
node.ProtocolEvents,
276+
state,
277+
node.Storage.Index,
278+
node.Storage.Payloads,
279+
blocktimer.DefaultBlockTimer,
280+
)
273281
builder.FollowerState = followerState
274282

275283
return err

cmd/verification_builder.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,15 @@ func (v *VerificationNodeBuilder) LoadComponentsAndModules() {
120120
if !ok {
121121
return fmt.Errorf("only implementations of type badger.State are currently supported but read-only state has type %T", node.State)
122122
}
123-
followerState, err = badgerState.NewFollowerState(state, node.Storage.Index, node.Storage.Payloads, node.Tracer, node.ProtocolEvents, blocktimer.DefaultBlockTimer)
123+
followerState, err = badgerState.NewFollowerState(
124+
node.Logger,
125+
node.Tracer,
126+
node.ProtocolEvents,
127+
state,
128+
node.Storage.Index,
129+
node.Storage.Payloads,
130+
blocktimer.DefaultBlockTimer,
131+
)
124132
return err
125133
}).
126134
Module("verification metrics", func(node *NodeConfig) error {

consensus/integration/nodes_test.go

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,13 @@ func createNode(
377377
statusesDB := storage.NewEpochStatuses(metricsCollector, db)
378378
consumer := events.NewDistributor()
379379

380+
localID := identity.ID()
381+
382+
log := unittest.Logger().With().
383+
Int("index", index).
384+
Hex("node_id", localID[:]).
385+
Logger()
386+
380387
state, err := bprotocol.Bootstrap(
381388
metricsCollector,
382389
db,
@@ -395,24 +402,26 @@ func createNode(
395402
blockTimer, err := blocktimer.NewBlockTimer(1*time.Millisecond, 90*time.Second)
396403
require.NoError(t, err)
397404

398-
fullState, err := bprotocol.NewFullConsensusState(state, indexDB, payloadsDB, tracer, consumer, blockTimer, util.MockReceiptValidator(), util.MockSealValidator(sealsDB))
405+
fullState, err := bprotocol.NewFullConsensusState(
406+
log,
407+
tracer,
408+
consumer,
409+
state,
410+
indexDB,
411+
payloadsDB,
412+
blockTimer,
413+
util.MockReceiptValidator(),
414+
util.MockSealValidator(sealsDB),
415+
)
399416
require.NoError(t, err)
400417

401-
localID := identity.ID()
402-
403418
node := &Node{
404419
db: db,
405420
dbDir: dbDir,
406421
index: index,
407422
id: identity,
408423
}
409424

410-
// log with node index an ID
411-
log := unittest.Logger().With().
412-
Int("index", index).
413-
Hex("node_id", localID[:]).
414-
Logger()
415-
416425
stopper.AddNode(node)
417426

418427
counterConsumer := &CounterConsumer{

engine/common/follower/integration_test.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ func TestFollowerHappyPath(t *testing.T) {
4848
unittest.RunWithBadgerDB(t, func(db *badger.DB) {
4949
metrics := metrics.NewNoopCollector()
5050
tracer := trace.NewNoopTracer()
51+
log := unittest.Logger()
5152
consumer := events.NewNoop()
5253
all := storageutil.StorageLayer(t, db)
5354

@@ -57,7 +58,15 @@ func TestFollowerHappyPath(t *testing.T) {
5758
mockTimer := util.MockBlockTimer()
5859

5960
// create follower state
60-
followerState, err := pbadger.NewFollowerState(state, all.Index, all.Payloads, tracer, consumer, mockTimer)
61+
followerState, err := pbadger.NewFollowerState(
62+
log,
63+
tracer,
64+
consumer,
65+
state,
66+
all.Index,
67+
all.Payloads,
68+
mockTimer,
69+
)
6170
require.NoError(t, err)
6271
finalizer := moduleconsensus.NewFinalizer(db, all.Headers, followerState, tracer)
6372
rootHeader, err := rootSnapshot.Head()

engine/testutil/nodes.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func GenericNodeFromParticipants(t testing.TB, hub *stub.Hub, identity *flow.Ide
120120

121121
// creates state fixture and bootstrap it.
122122
rootSnapshot := unittest.RootSnapshotFixture(participants)
123-
stateFixture := CompleteStateFixture(t, metrics, tracer, rootSnapshot)
123+
stateFixture := CompleteStateFixture(t, log, metrics, tracer, rootSnapshot)
124124

125125
require.NoError(t, err)
126126
for _, option := range options {
@@ -146,7 +146,7 @@ func GenericNode(
146146
Logger()
147147
metrics := metrics.NewNoopCollector()
148148
tracer := trace.NewNoopTracer()
149-
stateFixture := CompleteStateFixture(t, metrics, tracer, root)
149+
stateFixture := CompleteStateFixture(t, log, metrics, tracer, root)
150150

151151
head, err := root.Head()
152152
require.NoError(t, err)
@@ -220,6 +220,7 @@ func LocalFixture(t testing.TB, identity *flow.Identity) module.Local {
220220
// CompleteStateFixture is a test helper that creates, bootstraps, and returns a StateFixture for sake of unit testing.
221221
func CompleteStateFixture(
222222
t testing.TB,
223+
log zerolog.Logger,
223224
metric *metrics.NoopCollector,
224225
tracer module.Tracer,
225226
rootSnapshot protocol.Snapshot,
@@ -248,7 +249,17 @@ func CompleteStateFixture(
248249
)
249250
require.NoError(t, err)
250251

251-
mutableState, err := badgerstate.NewFullConsensusState(state, s.Index, s.Payloads, tracer, consumer, util.MockBlockTimer(), util.MockReceiptValidator(), util.MockSealValidator(s.Seals))
252+
mutableState, err := badgerstate.NewFullConsensusState(
253+
log,
254+
tracer,
255+
consumer,
256+
state,
257+
s.Index,
258+
s.Payloads,
259+
util.MockBlockTimer(),
260+
util.MockReceiptValidator(),
261+
util.MockSealValidator(s.Seals),
262+
)
252263
require.NoError(t, err)
253264

254265
return &testmock.StateFixture{
@@ -542,7 +553,15 @@ func ExecutionNode(t *testing.T, hub *stub.Hub, identity *flow.Identity, identit
542553
protoState, ok := node.State.(*badgerstate.ParticipantState)
543554
require.True(t, ok)
544555

545-
followerState, err := badgerstate.NewFollowerState(protoState.State, node.Index, node.Payloads, node.Tracer, node.ProtocolEvents, blocktimer.DefaultBlockTimer)
556+
followerState, err := badgerstate.NewFollowerState(
557+
node.Log,
558+
node.Tracer,
559+
node.ProtocolEvents,
560+
protoState.State,
561+
node.Index,
562+
node.Payloads,
563+
blocktimer.DefaultBlockTimer,
564+
)
546565
require.NoError(t, err)
547566

548567
dbDir := unittest.TempDir(t)

engine/verification/assigner/blockconsumer/consumer_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,10 @@ func withConsumer(
123123
processedHeight := bstorage.NewConsumerProgress(db, module.ConsumeProgressVerificationBlockHeight)
124124
collector := &metrics.NoopCollector{}
125125
tracer := trace.NewNoopTracer()
126+
log := unittest.Logger()
126127
participants := unittest.IdentityListFixture(5, unittest.WithAllRoles())
127128
rootSnapshot := unittest.RootSnapshotFixture(participants)
128-
s := testutil.CompleteStateFixture(t, collector, tracer, rootSnapshot)
129+
s := testutil.CompleteStateFixture(t, log, collector, tracer, rootSnapshot)
129130

130131
engine := &mockBlockProcessor{
131132
process: process,

0 commit comments

Comments
 (0)