-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Labels
coreCore infrastructure - protocol relatedCore infrastructure - protocol relatedpersistencePersistence specific changesPersistence specific changesutilityUtility specific changesUtility specific changes
Milestone
Description
Objective
Implement a deterministic way to create a snapshot of the "World State" (technically a persisted version of what in the Design Document is referred as savepoint).
Origin Document
Goals
- When a snapshot creation is triggered, the node should pause the normal operation (use
state-machineandbusto coordinate with all the modules) - When the snapshot is completed (OK or KO), normal operation should resume (the node should sync to catch up with what happened while it was snapshotting)
- Implement a way to provide feedback to the caller (RPC->CLI) about the progress and status of the operation
- The same mechanism can be used for
rollbacksand polled by the CLI right after thecreate snapshot(orrollback to snapshot) command is triggered
- The same mechanism can be used for
- The last valid/persisted height should be used as datasource for the snapshot
- The snapshot should be saved to the filesystem into a folder that's defined in
Persistenceconfiguration but we should keep an open mind regarding the future introduction of multiple destination types that are filesystem-like (Tor, FTP, S3, etc.). Using a simple abstraction should be enough for now, see related tickets for the whole context. - The snapshot should be compressed
- The snapshot should be named meaningfully (append at least the height it refers to using a standardized naming convention that we'll have to put in the various documentation as well)
Deliverable
- A PR with implementation tending to the goals above
- Tests
Non-goals / Non-deliverables
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
coreCore infrastructure - protocol relatedCore infrastructure - protocol relatedpersistencePersistence specific changesPersistence specific changesutilityUtility specific changesUtility specific changes
Type
Projects
Status
Backlog