-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
feat: nv22: lightweight patch to upgrade calibnet #11776
Conversation
If we plan to ship this to mainnet, isn't the 1.26 release that we just cut going to cause a problem? |
Can we not do this? I'd really like to be able to test some events integration work on calibnet and not having the full event versions on there makes that hard. I gather that the main task here is to get consensus on an upgrade height for calibnet from its major users and then ship a 1.26.1 with a patch for it? What's the smallest window of time that we can reasonably do this without causing major pain for general calibnet users? |
@Stebalien I'm not sure I understand the question / the problem. 1.26.0, which we just cut, will sync mainnet and syncs calibnet as it is today. If we do this (that is, if we have a "lightweight" calibnet patch to pull in the latest actor event changes), we'll land this PR and cut a 1.26.1, which must be used to sync calibnet for the lightweight upgrade. Both 1.26.0 and 1.26.1 will sync mainnet well. |
So I'll be honest, I don't think we should do this, because it is a good amount of overhead and community management, plus some janky legacy code (this PR's changes, basically) that will live in Lotus for a while. I would like to say that we should be able to test the event integration work through itests & other test networks (butterflynet), but I'm not close enough to the work to know whether that's feasible. But, as far as I understood it, the decision that was made last week in standup was to ship this patch, and the dev work for it is done (this PR). I'm not advocating to reevaluate that decision (we made the call, let's do it), I just wanted to include it as a "we could also consider X" for PR completeness.
Yes, that's correct. In theory, we try to allow at least one week between a "release" for calibnet and an upgrade, but we've definitely violated that (a lot) in the past, especially with the monkey-patching of nv21 last November. Realistically, 48-72 hours is probably fine. However, this isn't a Lotus decision, we'd need to discuss this in #fil-implementers. |
c7c06bb
to
9e0bb17
Compare
Ah, I thought we were making the same change on mainnet.
I guess, what did we actually get from this change? What are we actually trying to test? |
It's not the end of the world though, as long as we're OK with going live with code that's different from what's been tested in a secondary live network. We tried to keep the diff small to help with confidence in the changes, but it's not nothing: filecoin-project/builtin-actors@v13.0.0-rc.3...v13.0.0 |
Reached consensus with Forest and Venus on the patch time for Calibnet, and the switch epoch we landed on was |
@@ -194,7 +195,8 @@ func readEmbeddedBuiltinActorsMetadata(bundle string) ([]*BuiltinActorsMetadata, | |||
// The following manifest cids existed temporarily on the calibnet testnet | |||
// We include them in our builtin bundle, but intentionally omit from metadata | |||
if root == cid.MustParse("bafy2bzacedrunxfqta5skb7q7x32lnp4efz2oq7fn226ffm7fu5iqs62jkmvs") || | |||
root == cid.MustParse("bafy2bzacebl4w5ptfvuw6746w7ev562idkbf5ppq72e6zub22435ws2rukzru") { | |||
root == cid.MustParse("bafy2bzacebl4w5ptfvuw6746w7ev562idkbf5ppq72e6zub22435ws2rukzru") || | |||
root == cid.MustParse("bafy2bzacea4firkyvt2zzdwqjrws5pyeluaesh6uaid246tommayr4337xpmi") { |
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.
@arajasek Why either or ? Should we not just migrate to the "right" one?
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.
bafy2bzacedrunxfqta5skb7q7x32lnp4efz2oq7fn226ffm7fu5iqs62jkmvs
and bafy2bzacebl4w5ptfvuw6746w7ev562idkbf5ppq72e6zub22435ws2rukzru
are the "incorrect" manifests from nv21 (Watermelon). bafy2bzacea4firkyvt2zzdwqjrws5pyeluaesh6uaid246tommayr4337xpmi
is the incorrect one currently running on calibnet.
These manifests are part of our builtin bundle (since they need to be present for the portions of the chain history when they were executed), but we don't want their metadata generated, so we skip them here. As a result only the "right" one is present in metadata.
}, { | ||
Height: build.UpgradeCalibrationDragonFixHeight, | ||
Network: network.Version22, | ||
Migration: upgradeActorsV13VerifregFix(calibnetv13BuggyVerifregCID1, calibnetv13CorrectManifestCID1), |
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.
Shouldn't this be from calibnetv13BuggyManifestCID1
to calibnetv13CorrectManifestCID1
?
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.
No, the params here aren't "buggy" and "correct" manifests, they're the buggy ACTOR cid (used for sanity-checking) and the correct manifest CID. See usage in function belowe.
9e0bb17
to
3d303f7
Compare
3d303f7
to
0b3df75
Compare
0b3df75
to
03bb6a9
Compare
TODO
calibrationnet-13-rc3
suffixreleases
branch directly (I assume we want it to go into a newly createdrelease/v1.26.1
branch, but I'll defer to the team on that)Related Issues
The calibration test network upgraded to nv22 / actors v13 2 weeks ago. In the time since then, new product requirements have emerged for the upcoming FIP-0083 (see proposals here and here). The current plan is to ship these proposed changes to mainnet AND retroactively apply them to calibnet (which is already running a version of actors v13).
Unfortunately, this is consensus-critical, and so needs a coordinated upgrade on the testnet in order to land the new code. This PR proposes a relatively easy way to achieve this.
Proposed Changes
UpgradeCalibrationDragonFixHeight
upgrade that ONLY exists for calibrationnet (disabled for all others)actorMeta
Additional Info
Checklist
Before you mark the PR ready for review, please make sure that:
<PR type>: <area>: <change being made>
fix: mempool: Introduce a cache for valid signatures
PR type
: fix, feat, build, chore, ci, docs, perf, refactor, revert, style, testarea
, e.g. api, chain, state, market, mempool, multisig, networking, paych, proving, sealing, wallet, deps