-
Notifications
You must be signed in to change notification settings - Fork 4.4k
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
Shreds inserted by master causes panic when read by v1.6 #17136
Comments
@mvines Hi, I think this is a minor blocker for testnet v1.7 thing. This effectively makes downgrading in case of emergency impossible. Definitely we want to keep the recovery measure for eventual v1.6 => v1.7 on mainnet-beta thing. |
@ryoqun - To confirm my understanding of this issue, was the node here running master (inserting shreds into blockstore), and then the node started running |
@steviez yeah, that's correct in that the two invocations are using the same ledger. Also, note that |
@ryoqun - Thanks for the confirmation. Comparing the branches, this is expected behavior (and a scenario I'll admit I didn't really consider at time of that PR) given what is currently in a) and b) are obviously not an issue since each branch is compatible with itself. To resolve c), I believe backporting the commit to v1.6 would solve the issue: bc31378 |
This is obviously something I'd like to test out first though, preparing a branch now |
Would backporting cause the tip of v1.6 to no longer be compatible with the latest v1.6.8 release? |
Good point - a straight cherry-pick of the commit would result in the issue Ryo initially described occurring between tip of v1.6 and v1.6.8 release. Rather, I think I can be a little more surgical, and cherry-pick part of the commit such that it is backwards compatible |
why cherrypick at all then? If we can make the tip of v1.6 compatible with v1.6.8 then we can do the same with the tip of master |
master has this change to strip the zero-padding from shreds before insertion into the blockstore, and to re-zero-pad on fetch (the padding is necessary for erasure decoding); this prevents us from bloating the ledger with a bunch of 0's. This is a compatibility break with v1.6 because v1.6 doesn't have the logic to zero-pad the shreds on fetch. Making the tip of master compatible with v1.6 (tip or v1.6.8) would require master to leave the zero-padding on the shred on insertion, which would defeat the purpose of the space saving measure |
Ok cool. Goal: master <-> latest release on mainnet are always update/downgrade compatible, and interoperable at runtime. |
Understood. For a change like this where there is an explicit break, what would the proper protocol be? Maybe push an "auxiliary commit" that would provide upgrade compatibility from latest release branch (v1.6 in this case) to master, wait for a release in that release branch (ie v1.6.9), and then push the intended change into master? |
This comment has been minimized.
This comment has been minimized.
Oh sorry, yeah I this case it's not a runtime feature at all. So yes, "auxiliary commit" that would provide upgrade compatibility. Then wait for that to roll out to mainnet, and then land the other half on master |
No worries, I wasn't aware of
Got it - noted for the future |
#17147 fixes the compatibility issue |
Problem
Maybe, #16602 started to cause this problem? (CC: @steviez )
Proposed Solution
Support reading old format shreds from rocksdb?
The text was updated successfully, but these errors were encountered: