[Core] KISS 1 - Finite State Machine [Merge me first] - (Issue: #499)#520
[Core] KISS 1 - Finite State Machine [Merge me first] - (Issue: #499)#520
Conversation
Olshansk
left a comment
There was a problem hiding this comment.
Left a few comments/suggestions but nothing blocking. Approving so we can get the ⛵ moving.
This was VERY easy to read and review. I know it was painful, but truly appreciate it!!
|
|
||
| func (m *consensusModule) SetBus(pocketBus modules.Bus) { | ||
| m.bus = pocketBus | ||
| m.IntegratableModule.SetBus(pocketBus) |
There was a problem hiding this comment.
Your example is not representative of the scenario.
In here we are overloading something that's handled already in the embedded struct.
If I did what you are suggesting I guess we would have this 🤔:

Let's play dumb and try it out...
Actually the behaviour is even weirder:
overloading.mp4
nothing happens!
If I try to "walk my way into the stack"... it stops there, suggesting that my solution seems to be the right approach.
overloading2.mp4
If you wanna play along:
https://go.dev/play/p/s8ncxTVMMp6
There was a problem hiding this comment.
Okay, I understand what I was missing and why you're solution works.
However, now I'm trying to understand:
- We're not calling the parent's
foofunction (bey default) - We're not entering an infinite recursion
I can understand why (1) is not happening, but without researching, this makes me feel that the playground abstracts (2) away for us.
Co-authored-by: Daniel Olshansky <olshansky@pokt.network>
Co-authored-by: Daniel Olshansky <olshansky@pokt.network>
Co-authored-by: Daniel Olshansky <olshansky@pokt.network>
…429) (#521) ## Description This PR has been extracted from #491 and is, hopefully, more digestible from a code-review and scope point of view. The main goal is to remove hardcoded nodes and move towards a more dynamic environment. It's also highlighting the potential entry points for subsequent P2P work The code leverages the abstractions added recently (`currentHeightProvider` and `addressBookProvider`) to fetch the data from an RPC endpoint. ## Issue Fixes #416 Fixes #429 ## Type of change Please mark the relevant option(s): - [x] New feature, functionality or library - [ ] Bug fix - [ ] Code health or cleanup - [x] Major breaking change - [ ] Documentation - [ ] Other <!-- add details here if it a different type of change --> ## List of changes ### CLI - Updated CLI to use to source the address book and the current height from the RPC server leveraging the `rpcAddressBookProvider` and `rpcCurrentHeightProvider` respectively and the `bus` for dependency injection ### P2P - Modules embed `base_modules.IntegratableModule` and `base_modules.InterruptableModule` for DRYness - Deprecated `debugAddressBookProvider` - Added `rpcAddressBookProvider` to source the address book from the RPC server - Leveraging `bus` for dependency injection of the `addressBookProvider` and `currentHeightProvider` - Deprecated `debugCurrentHeightProvider` - Added `rpcCurrentHeightProvider` to source the current height from the RPC server - Fixed raintree to use the `currentHeightProvider` instead of consensus (that was what we wanted to avoid in the first place) - Added `getAddrBookDelta` to calculate changes to the address book between heights and update the internal state and componentry accordingly - Reacting to `ConsensusNewHeightEventType` to update the address book - Updated tests ### RPC - Updated RPC to expose the node's address book via GET /v1/p2p/staked_actors_address_book ## Testing - [x] `make develop_test` - [x] [LocalNet](https://github.com/pokt-network/pocket/blob/main/docs/development/README.md) w/ all of the steps outlined in the `README` <!-- REMOVE this comment block after following the instructions If you added additional tests or infrastructure, describe it here. Bonus points for images and videos or gifs. --> ## Required Checklist - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [x] I have tested my changes using the available tooling - [x] I have updated the corresponding CHANGELOG ### If Applicable Checklist - [ ] 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 - [ ] 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) --------- Signed-off-by: Alessandro De Blasis <alex@deblasis.net> Co-authored-by: Dmitry K <okdas@pm.me> Co-authored-by: Dmitry Knyazev <okdas@users.noreply.github.com> Co-authored-by: Daniel Olshansky <olshansky@pokt.network> Co-authored-by: Daniel Olshansky <olshansky.daniel@gmail.com>
* pokt/main: [Infra] KISS 3 - Cluster Manager [Merge me after #521] - (Issues: #490) (#522) Refactor/fix state sync logs (#515) [P2P] KISS 2 - Peer discovery [Merge me after #520] - (Issues: #416, #429) (#521) [Core] KISS 1 - Finite State Machine [Merge me first] - (Issue: #499) (#520) [CLI] Stake command bugfix (#518) [CLI] Cannot run make localnet_client_debug: Cannot initialise the keybase with the validator keys: Unable to find YAML file (#517) Fix the link shown by `make go_doc` Fixed duplicate GITHUB_WIKI tag [Documentation] Update Devlog Formatting (#512) [Docs & Bugs] Minor fixes post keybase changes (#513) [Utility] Foundational bugs, tests, code cleanup and improvements (1 / 2) (#503) [Tooling] Integrate Keybase w/ CLI (Issue #484 ) (#501) update devlog2.md update devlog2.md Update devlog1.md
* pokt/main: [Infra] KISS 3 - Cluster Manager [Merge me after #521] - (Issues: #490) (#522) Refactor/fix state sync logs (#515) [P2P] KISS 2 - Peer discovery [Merge me after #520] - (Issues: #416, #429) (#521) [Core] KISS 1 - Finite State Machine [Merge me first] - (Issue: #499) (#520) [CLI] Stake command bugfix (#518) [CLI] Cannot run make localnet_client_debug: Cannot initialise the keybase with the validator keys: Unable to find YAML file (#517) Fix the link shown by `make go_doc` Fixed duplicate GITHUB_WIKI tag [Documentation] Update Devlog Formatting (#512) [Docs & Bugs] Minor fixes post keybase changes (#513) [Utility] Foundational bugs, tests, code cleanup and improvements (1 / 2) (#503) [Tooling] Integrate Keybase w/ CLI (Issue #484 ) (#501) update devlog2.md update devlog2.md Update devlog1.md


Description
This PR has been extracted from #491 and is, hopefully, more digestible from a code-review and scope point of view.
In a nutshell:
ModulesRegistrybase_modulesthat provide basic functionality (that can still be customized/extended when needed)Issue
Fixes #499
Type of change
Please mark the relevant option(s):
List of changes
In a nutshell:
ModulesRegistrybase_modulesthat provide basic functionality (that can still be customized/extended when needed)Testing
make develop_testREADMERequired Checklist
If Applicable Checklist
shared/docs/*if I updatedshared/*README(s)