-
Notifications
You must be signed in to change notification settings - Fork 673
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
Nakamoto: 2.5/3.0 Node should migrate from 2.4.x chainstate #4454
Comments
Just wanted to say, this is a lot more reasonable (and a lot less scary) than what I thought was being suggesting earlier. It had sounded like we were going to do away with genesis sync altogether, which would have been much more difficult if not impossible to work with to recover from SIP-011-type catastrophes like the 2.1 --> 2.4 transition (which I don't think could be safely achieved without a genesis sync). That said, we made the decision early on in |
Oh yeah -- that's not what I am suggesting. The ability to do genesis syncs is very important, I agree. I think it's just much easier on the network to not require them on updates.
Yes -- I agree, this requires some investigation. I think it's possible that its still not that much yet -- NakamotoBlocks are using entirely new tables after all. There are some new columns, etc. elsewhere, but I think that we should be able to enumerate them. |
Yes, 100% agreed. I'd be in favor of making chainstate backwards-compatibility a requirement going forward for all releases, including hard forks. We'll want to spend some time thinking about how best to test this, but I have a few ideas (e.g. we could save a bunch of chainstate snapshots from legacy nodes for just this purpose in order to verify that all previous snapshots migrate to the latest schemas, for example). |
Thanks @cylewitruk, this will save an enormous amount of time across the ecosystem |
I'm going to wrap up what I'm currently working on with @jcnelson @kantai If there are any hints/tips/gotcha's you'd like to drop here before I get started, it might save some time later. Thinking mostly about new columns which may need to be derived in some way -- if you know how they should be derived, etc. Or if new columns can have some default value. I think you get what I'm after.. :) |
I tried to run replay-block with the latest next (commit), as I did before on the 99,990-100k blocks, and it crashes. I think something was added for newer blocks to create the signers signature, but the code runs with previous blocks the same way and it throws as that field doesn’t exist. computer@debian:~/Desktop/profiling/asuciux-core/target/release$ hyperfine -w 3 -r 10 "./stacks-inspect-d3f1a3164-17-mar replay-block ~/chainstate range 99990 100000" --show-output
Benchmark 1: ./stacks-inspect-d3f1a3164-17-mar replay-block ~/chainstate range 99990 100000
Will check 10 blocks
Checked 0...
thread 'main' panicked at stackslib/src/main.rs:1578:6:
called `Result::unwrap()` on an `Err` value: SqliteError(SqliteFailure(Error { code: Unknown, extended_code: 1 }, Some("no such table: main.vote_for_aggregate_key")))
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Error: Command terminated with non-zero exit code: 101. Use the '-i'/'--ignore-failure' option if you want to ignore this. Alternatively, use the '--show-output' option to debug what went wrong. |
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
The Nakamoto stacks-node should be able to migrate from 2.4.x chainstates.
The text was updated successfully, but these errors were encountered: