-
Notifications
You must be signed in to change notification settings - Fork 51
Versioning Tendermint Backup #1815
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
RocksDB has a prefix iterator. If we make the key to be prefixed like |
It's a good idea. How about adding |
I found that mempool backup already uses a prefix like "item_." I'll use the version prefix as "version_" for consistency. codechain/core/src/miner/backup.rs Line 27 in e9bc48e
|
Why we need versioning
We are using DB without versioning. If we change the structure of the saved data, we should migrate the old data with the new data format. We need a version number to check the data's structure.
Current database structure
There are six columns in our Database.
Save the version number
I propose a versioning scheme. The scheme is saving the version as an integer in some key. For the Tendermint backup, save the data version number in the "tendermint-backup-version" key in the COL_EXTRA column. For the mempool backup, save the version in the "mempool-backup-version" key in the COL_MEMPOOL column.
Migration
We should implement migration code from version x to version x + 1. When CodeChain starts, it should check the save data's version. If the version is lower than the current version, it should run the migration code.
Pseudocode
The text was updated successfully, but these errors were encountered: