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
EpochEmergencyFallbackTriggerednotification. - sets a corresponding flag in the data base
Components that ingest EpochEmergencyFallbackTriggered notification (in-memory)
-
committees.Consensus -
BlockTimeController -
EpochLookup - Metrics:
ComplianceCollectorand the respective interfaceComplianceMetrics - Pub-sub components for distributing notifications:
events.Distributorand corresponding interfaceprotocol.Consumer
Components that read EpochEmergencyFallbackTriggered flag from data base
-
InstanceParamsreads the flag from data base on each call ofEpochFallbackTriggered() - The protocol
Statereads the flag from data base when updating the metrics during bootstrapping or opening the state - The
FollowerState(mutator) /ParticipantStatereads 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