-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Labels
consensusConsensus specific changesConsensus specific changescoreCore infrastructure - protocol relatedCore infrastructure - protocol relatedpersistencePersistence specific changesPersistence specific changesutilityUtility specific changesUtility specific changes
Milestone
Description
Objective
This issue is going to be an "umbrella" ticket/epic used to wrap and link all the intermediate steps/deliverables that are necessary to build Savepoints and Rollbacks as highlighted in the Design Document - Issue #493
Origin Document
This is the result of R&D work on #508 which was essentially asking the assignee to build savepoints and rollbacks, just with a different wording thanks to a more "practical" problem to solve.
Goals
- Implement an abstraction that can contain the operations performed on the various persistence datastores (as described in the design document) and apply/rollback them atomically
- Implement a way to serialize and deserialize the whole persistence state so that's possible to create snapshots and rehydrate them
- Implement the Moonshot parts of the design document (perhaps out-of-scope for now? I won't include the deliverables below but please let me know if I should)
- Ensure that the state of the modules is restored in case of a rollback
Deliverable
- Work stream A
- [Utility][Persistence][Savepoints/Rollbacks] Refactor
UtilityContextintoUtilityUnitOfWork#563 - [Persistence][Core][Savepoints/Rollbacks] Implement KISS SavePoints - Serialize WorldState from Persistence #327
- [Utility][Persistence][Savepoints/Rollbacks] Implement change tracking in
UtilityUnitOfWorkto allow ephemeral state and remove side effects #564 - [Persistence][Core][Savepoints/Rollbacks] Implement KISS Rollbacks - Deserialize WorldState to Persistence #435
- [Utility][Persistence][Savepoints/Rollbacks] Implement Snapshots - Persist SavePoints #567
- [Utility][Persistence][Savepoints/Rollbacks] Implement Rollback from Snapshot #568
- [Utility][Persistence][Savepoints/Rollbacks] Refactor
- Work stream B
- Work stream AB (when A & B are completed)
Non-goals / Non-deliverables
- Changes in logic with particular focus to
Consensus
General issue deliverables
- Update the appropriate CHANGELOG(s)
- Update any relevant local/global README(s)
- Update relevant source code tree explanations
- Add or update any relevant or supporting mermaid diagrams
Testing Methodology
- Task specific tests or benchmarks:
make ... - New tests or benchmarks:
make ... - All tests:
make test_all - LocalNet: verify a
LocalNetis still functioning correctly by following the instructions at docs/development/README.md
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
consensusConsensus specific changesConsensus specific changescoreCore infrastructure - protocol relatedCore infrastructure - protocol relatedpersistencePersistence specific changesPersistence specific changesutilityUtility specific changesUtility specific changes
Type
Projects
Status
In Review