Fix
This commit is contained in:
parent
86c5453254
commit
9d0f586ae7
@ -1807,111 +1807,6 @@ func upgradeActorsV11Common(
|
|||||||
return newRoot, nil
|
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
|
// 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) {
|
//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())
|
// buf := blockstore.NewTieredBstore(sm.ChainStore().StateBlockstore(), blockstore.NewMemorySync())
|
||||||
|
Loading…
Reference in New Issue
Block a user