1. Updates or replaces outdated dependencies (eg, replacing a version of the Prysm client with the latest zrnt).
2. Add support for parsing Bellatrix-era BeaconState and BeaconBlocks
3. Adds flags for toggling the processing of BeaconBlocks and BeaconState. This is particularly important because processing and storing the BeaconState at this time would be too expensive to really do (see: Temporarily disable BeaconState indexing #75 and [Feature] Reduce the Amount of DB Space the Beacon Chain Needs #71)
4. Fixes flaky event handling. The previous code would not reconnect in the case of errors with the SSE connection. This enables automatic reconnection in the case of error (default in the updated v2 SSE library dependency), and also adds a timeout so that if no event is received in 2.5x the block time, the SSE connection is closed and re-established.
5. Other refactoring and cleanup (eg, changing the type of slot from int to Slot (uint64)).
* Set starting slot and improve error gap capturing
* Set starting slot and improve error gap capturing
* Tests + Significant Refactor
The code for historical processing has been significantly refactored to use a context to signify a shutdown.
There have also been many tests added for historical and knownGaps processing.
* Update MhKeys in test
* Update correct values
* Update Max Retry
Genesis is not working as expected.
* Ensure we release locks properly
* Add ordered testing
* Include system tests
* Update workflow calls
* Add secrets
* Add required secrets
* update path
* Try using the absolute path
* Remove volumes at the end.
* Update system-tests.yml
* Update system-tests.yml
* Update test err
* Update and test the shutdown
* rename ethcl --> eth-beacon
* Try forcing /bin/bash for docker-compose
* Update system-tests.yml
* Update system-tests.yml
* Update system-tests.yml
* Update system-tests.yml
* Update system-tests.yml
* Update system-tests.yml
* Use single quote cron
* Dont run generic on schedule
* Use a transaction for writing, knowngaps, and reorgs
* Checkpoint - Check the DB before writing
* Ensure an error exists when writing a transaction to knowngaps
* Update unneccesary parameter
* Capture the unique identifier everywhere its needed.
* Handle graceful shutdown for historical processing
* Update flags and minor shutdown updates
* Update checkout statement for historic
* update cicd pipeline
* Add secret
* Use deploy-key instead of personal PAT
* update variables
* Update boot to set processing type.
* Handle entries from the historic_process table.
* Update on-pr.yml
* Fix head processing Error
* Update names and debug
* Seperate checking for new entries and locking them
* Application can process historic and known gaps
Untested
* Handle genesis
* Update remove entry for knownGaps, viper
* Disregard unused code from linter
* Ensure that the node is synced at boot time
* Update test + add logic for checking skipped slots
* Update boot check
* Add skip_sync to config.
* Update a test so it fails
* -- Intermediary Commit --
Just want to commit my code over the weekend, in case I spill coffee on my workstation.
* Create DB models ready for write.
* Handle SSE events
* Update ref for stack-orchestrator
* Use env in one place only.
* Boot Application on PR
* Update syntax
* Update syntax
* Correct command
* Use bash instead of sh
* Use until instead of while
* Make linter happy and check sse subscription err
* Handle Reorgs - Untested
This Commit contains the following:
* Graceful shutdowns.
* Handling all incoming SSE events for reorgs, finalizations, and head.
The structure of the `BeaconClient` has drastically changed and generics are used.
This concludes all the code needed to connect to the DB and beacon node. We will no longer reference the lighthouse client because this application should work interchangeably with any beacon node.
I have also standardized logging.