flow-go
flow-go copied to clipboard
[EPIC] [EFM Recovery - M3] Overview
Broad system-level overview
The following is an overview of which components control the Epoch Fallback Mode [EFM] and which components react to it (all prior to any work on EFM Recovery). Those will probable be the components where the central algorithmic changes will be made.
Components controll EFM mode
The FollowerState
(mutator) / ParticipantState
implements
-
logic for emitting the
EpochEmergencyFallbackTriggered
notification. - sets a corresponding flag in the data base
Components that ingest EpochEmergencyFallbackTriggered
notification (in-memory)
-
committees.Consensus
-
BlockTimeController
-
EpochLookup
- Metrics:
ComplianceCollector
and the respective interfaceComplianceMetrics
- Pub-sub components for distributing notifications:
events.Distributor
and corresponding interfaceprotocol.Consumer
Components that read EpochEmergencyFallbackTriggered
flag from data base
-
InstanceParams
reads the flag from data base on each call ofEpochFallbackTriggered()
- The protocol
State
reads the flag from data base when updating the metrics during bootstrapping or opening the state - The
FollowerState
(mutator) /ParticipantState
reads the flag from data base when finalizing a new block
### Tasks
- [ ] https://github.com/onflow/flow-go/issues/5762
- [ ] https://github.com/onflow/flow-go/issues/5127
- [ ] https://github.com/onflow/flow-go/issues/5723
- [ ] https://github.com/onflow/flow-go/issues/5725
- [ ] https://github.com/onflow/flow-go/issues/5728
- [ ] https://github.com/onflow/flow-go/issues/5631
- [ ] https://github.com/onflow/flow-go/issues/5727
- [ ] https://github.com/onflow/flow-go/issues/5726
- [ ] https://github.com/onflow/flow-go/issues/5724
- [ ] https://github.com/onflow/flow-go/issues/5717