diff --git a/chain/consensus/filcns/upgrades.go b/chain/consensus/filcns/upgrades.go index 5cf7c4746..260bac8dd 100644 --- a/chain/consensus/filcns/upgrades.go +++ b/chain/consensus/filcns/upgrades.go @@ -1807,111 +1807,6 @@ func upgradeActorsV11Common( return newRoot, nil } -func PreUpgradeActorsV11(ctx context.Context, sm *stmgr.StateManager, cache stmgr.MigrationCache, root cid.Cid, epoch abi.ChainEpoch, ts *types.TipSet) error { - // Use half the CPUs for pre-migration, but leave at least 3. - workerCount := MigrationMaxWorkerCount - if workerCount <= 4 { - workerCount = 1 - } else { - workerCount /= 2 - } - - lbts, lbRoot, err := stmgr.GetLookbackTipSetForRound(ctx, sm, ts, epoch) - if err != nil { - return xerrors.Errorf("error getting lookback ts for premigration: %w", err) - } - - config := migration.Config{ - MaxWorkers: uint(workerCount), - ProgressLogPeriod: time.Minute * 5, - } - - _, err = upgradeActorsV11Common(ctx, sm, cache, lbRoot, epoch, lbts, config) - return err -} - -func UpgradeActorsV11(ctx context.Context, sm *stmgr.StateManager, cache stmgr.MigrationCache, cb stmgr.ExecMonitor, - root cid.Cid, epoch abi.ChainEpoch, ts *types.TipSet) (cid.Cid, error) { - // Use all the CPUs except 2. - workerCount := MigrationMaxWorkerCount - 3 - if workerCount <= 0 { - workerCount = 1 - } - config := migration.Config{ - MaxWorkers: uint(workerCount), - JobQueueSize: 1000, - ResultQueueSize: 100, - ProgressLogPeriod: 10 * time.Second, - } - newRoot, err := upgradeActorsV11Common(ctx, sm, cache, root, epoch, ts, config) - if err != nil { - return cid.Undef, xerrors.Errorf("migrating actors v11 state: %w", err) - } - return newRoot, nil -} - -func upgradeActorsV11Common( - ctx context.Context, sm *stmgr.StateManager, cache stmgr.MigrationCache, - root cid.Cid, epoch abi.ChainEpoch, ts *types.TipSet, - config migration.Config, -) (cid.Cid, error) { - buf := blockstore.NewTieredBstore(sm.ChainStore().StateBlockstore(), blockstore.NewMemorySync()) - store := store.ActorStore(ctx, buf) - - // ensure that the manifest is loaded in the blockstore - if err := bundle.LoadBundles(ctx, sm.ChainStore().StateBlockstore(), actorstypes.Version11); err != nil { - return cid.Undef, xerrors.Errorf("failed to load manifest bundle: %w", err) - } - - // Load the state root. - var stateRoot types.StateRoot - if err := store.Get(ctx, root, &stateRoot); err != nil { - return cid.Undef, xerrors.Errorf("failed to decode state root: %w", err) - } - - if stateRoot.Version != types.StateTreeVersion5 { - return cid.Undef, xerrors.Errorf( - "expected state root version 5 for actors v11 upgrade, got %d", - stateRoot.Version, - ) - } - - manifest, ok := actors.GetManifest(actorstypes.Version11) - if !ok { - return cid.Undef, xerrors.Errorf("no manifest CID for v11 upgrade") - } - - // Perform the migration - newHamtRoot, err := nv19.MigrateStateTree(ctx, store, manifest, stateRoot.Actors, epoch, config, - migrationLogger{}, cache) - if err != nil { - return cid.Undef, xerrors.Errorf("upgrading to actors v11: %w", err) - } - - // Persist the result. - newRoot, err := store.Put(ctx, &types.StateRoot{ - Version: types.StateTreeVersion5, - Actors: newHamtRoot, - Info: stateRoot.Info, - }) - if err != nil { - return cid.Undef, xerrors.Errorf("failed to persist new state root: %w", err) - } - - // Persist the new tree. - - { - from := buf - to := buf.Read() - - if err := vm.Copy(ctx, from, to, newRoot); err != nil { - return cid.Undef, xerrors.Errorf("copying migrated tree: %w", err) - } - } - - return newRoot, nil -} - // Example upgrade function if upgrade requires only code changes //func UpgradeActorsV9(ctx context.Context, sm *stmgr.StateManager, _ stmgr.MigrationCache, _ stmgr.ExecMonitor, root cid.Cid, _ abi.ChainEpoch, _ *types.TipSet) (cid.Cid, error) { // buf := blockstore.NewTieredBstore(sm.ChainStore().StateBlockstore(), blockstore.NewMemorySync())