Open lemmih opened 1 month ago
Is there an option to store manifests in a separate namespace so they don't get garbage collected ever?
Yes, like our settings, the manifests should be stored in a separate column.
Decide on the option by implementor:
Going with blessed column as per team decision.
Describe the bug
Each network upgrade has a manifest. This manifest is stored in the blockstore on start-up. The manifests are unreachable from the blockstore and will, therefore, get garbage collected. The missing manifests will cause the next network upgrade to fail.
To reproduce
Run
forest
continuously for a week before a network upgrade.Log output
Log Output
``` 2024-10-23T14:26:48.764982Z ERROR forest_filecoin::chain_sync::tipset_syncer: Syncing tipset range [2078795, 2078905] failed: Validation error: Processing error: Could not update state: manifest for network version NV24 not found in blockstore: bafy2bzaceax5zkysst7vtyup4whdxwzlpnaya3qp34rnoi6gyt4pongps7obw, Processing error: Failed to calculate state: manifest for network version NV24 not found in blockstore: bafy2bzaceax5zkysst7vtyup4whdxwzlpnaya3qp34rnoi6gyt4pongps7obw ```Expected behaviour
Manifests should not be garbage collected.
Screenshots
Environment (please complete the following information):
Other information and links
Option 1 - Blessed column
Have a separate column for Manifest storage. Plug it into the
get
that doesDbColumn::GraphDagCborBlake2b256 | DbColumn::GraphFull
already. It's an extra read, but only when there is a miss on the above columns.Pros
Cons - negligible
Option 2 - Whitelist
Whitelist certain CIDs to prevent them from being GCed.
Pros
Cons
Option 3 - On-demand download of manifests before network upgrades
Download bundles as needed X epochs before the upgrade.
Pros
Cons