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
Allow database migration upon adding new database column family to schema #1851
Allow database migration upon adding new database column family to schema #1851
Conversation
Answering your comment in the issue:
You are welcome to contribute, and yeah, it is the right direction. I created a test case #1853 to prove that the fix works. Could you rebase your PR to use this branch with the test case, please? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you fix CI please?=) You can run locally ./ci_checks.sh
to perform all CI checks
967710b
to
5b4f560
Compare
@xgreenx I am seeing the following issue upon running the checks, which seems unrelated. |
6334d6a
to
da71786
Compare
da71786
to
66e0071
Compare
I would suggest you to use |
66e0071
to
aa7535d
Compare
aa7535d
to
ccf6511
Compare
I have fixed the original issue and the failing tests have been fixed. However, upon further running the checks I see some 5 more tests failing:
These are not directly related to my changes atleast - I will investigate more tomorrow. Let me know if you have any idea till then. Thanks |
@xgreenx Slightly by increasing this |
for (name, opt) in cf_descriptors_to_create { | ||
db.create_cf(name, &opt) | ||
.map_err(|e| DatabaseError::Other(e.into()))?; | ||
} | ||
Ok(db) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe it makes sense to move this loop after db
is opened(below of the match
statement). In this case you also will handle the case of the error with repair.
Self::cf_opts(i, &block_opts), | ||
) | ||
}); | ||
DB::open_cf_descriptors(&opts, &path, cf_descriptors) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DB::open_cf_descriptors(&opts, &path, cf_descriptors) | |
DB::open_cf_descriptors(&opts, &path, cf_descriptors_to_open) |
4165449
into
FuelLabs:feature/support-new-tables-rocksdb
## Version v0.26.0 ### Fixed #### Breaking - [#1868](#1868): Include the `event_inbox_root` in the header hash. Changed types of the `transactions_count` to `u16` and `message_receipt_count` to `u32` instead of `u64`. Updated the application hash root calculation to not pad numbers. - [#1866](#1866): Fixed a runtime panic that occurred when restarting a node. The panic happens when the relayer database is already populated, and the relayer attempts an empty commit during start up. This invalid commit is removed in this PR. - [#1871](#1871): Fixed `block` endpoint to return fetch the blocks from both databases after regenesis. - [#1856](#1856): Replaced instances of `Union` with `Enum` for GraphQL definitions of `ConsensusParametersVersion` and related types. This is needed because `Union` does not support multiple `Version`s inside discriminants or empty variants. - [#1870](#1870): Fixed benchmarks for the `0.25.3`. - [#1870](#1870): Improves the performance of getting the size of the contract from the `InMemoryTransaction`. - [#1851](#1851): Provided migration capabilities (enabled addition of new column families) to RocksDB instance. ### Added - [#1853](#1853): Added a test case to verify the database's behavior when new columns are added to the RocksDB database. - [#1860](#1860): Regenesis now preserves `FuelBlockIdsToHeights` off-chain table. ### Changed - [#1847](#1847): Simplify the validation interface to use `Block`. Remove `Validation` variant of `ExecutionKind`. - [#1832](#1832): Snapshot generation can be cancelled. Progress is also reported. - [#1837](#1837): Refactor the executor and separate validation from the other use cases ## What's Changed * Weekly `cargo update` by @github-actions in #1850 * Refactor/separate validation from other executions by @MitchTurner in #1837 * fix: Use `Enum` for `ConsensusParametersVersion` and related types by @bvrooman in #1856 * feat: snapshot generation graceful shutdown by @segfault-magnet in #1832 * regenesis: migrate FuelBlockIdsToHeights by @Dentosal in #1860 * Weekly `cargo update` by @github-actions in #1869 * Refactor/Simplify validation logic by @MitchTurner in #1847 * Fixed `block` endpoint to return fetch the blocks from both databases after regenesis by @xgreenx in #1871 * Add Eq and Partial Eq to tx response and status by @MujkicA in #1872 * test: restart with relayer data by @bvrooman in #1866 * Fix `BlockHeader` hash by @MitchTurner in #1868 * Added a test for the case of adding new columns into the existing RocksDB database by @xgreenx in #1853 * Fixed benchmarks for the `0.25.3` by @xgreenx in #1870 **Full Changelog**: v0.25.3...v0.26.0
Adds migration capabilities (allows adding new column family to existing database) to RocksDB instance. This change makes sure RocksDB open is always requested with the existing set of column families and all new column families are later created once opened.
Before requesting review