-
Notifications
You must be signed in to change notification settings - Fork 986
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
fix: dont' persist storage changes at genesis #1182
Conversation
Should we also change |
I'm not sure why this fixes the db corruption. There are other storage writes in |
Ok, I thing I've resolved my confusion. The point is that we are no longer committing a block, so the flushed data in the sst files gets ignored. |
The stuff that's written into wl_storage goes into write log at block level, so nothing goes into storage until it's committed |
Looks like bunch e2e tests are affected? |
9054bb4
to
9f12e09
Compare
f365980
to
cc27ab0
Compare
it does have to be mutable as it has to write to write log and to initialize couple things in storage in-memory, but it should not commit to DB - I've added a unit test in 8d8b563 to check that - there were couple things doing this (chain parameters, gov params and IBC) |
cc27ab0
to
1694af8
Compare
1694af8
to
f053725
Compare
5d3b9e1
to
979a5ec
Compare
needs more reviews |
* tag 'v0.14.2': Namada 0.14.2 changelog: add #1191 test/pos/sm: fix init-validator and bond pre-conditions [ci] wasm checksums update ci: use nightly version for e2e test test/pos/sm: add the rest of the conditions pos: improve withdrawal logs test/pos/sm: add another bonds post-cond test/pos/sm: generate InitValidator transitions test/pos: fix the bonds test test/pos: reduce the bond token amounts to cover cases with same amounts bug fix: `update_validator_set` precisely checks if validator in consensus set pos: remove the `init` function to just use `set` instead make: add unstable-options to `check-abcipp` recipe pos: turn prints into tracing::debug, tidy up code pos/epoched: fix the update_data logic test/pos: add a state machine test test/core/address: fix address generator to be deterministic core/token: re-export `token::Change` type from storage_api mod make: use unstable-options to build unit tests changelog: add #1197 [ci] wasm checksums update pos: ensure that validator consensus keys are unique core/storage: impl KeySeg for common::PublicKey test/lazy_set: add `try_insert` to state machine test core/lazy_set: add `try_insert` method small documentation edits changelog: add #1196 [ci] wasm checksums update test: add a state machine test for lazy set collection core/storage_api: add LazySet changelog: #1182 test/e2e: wait for a first block before client cmds wl_storage: remove commit_genesis method test/e2e: put ledger to bg to avoid it getting stuck gov/parameters: init via storage_api write log parameters: init chain parameters via storage_api write log init-chain: fix ibc to go via wl_storage [chore]:Added a doc warning [feat]: Dont' persist storage changes at genesis test/init_chain: ensure that init-chain doesn't commit to DB test/storage: reduce arb key length [ci] wasm checksums update changelog: add #1141 bug fix: reliable deterministic ordering of keys in wl_storage PrefixIter that fixes apply_inflation bug test/core/wl_storage: add test for `prefix_iter_pre`/`prefix_iter_post`
Persisting storage at genesis (init chain) can cause database corruption if a node restarts before reaching blockheight 1. The persistence of state should only occur at the time that tendermint is informed of the next block height. Thus we remove the db write call in init chain and defer persisting until the first commit block call.
Note: Due to Issue #1190, not all e2e tests may pass.