fix: stmgr: do not use cached migration results if absent from the blockstore (#11663)
This commit is contained in:
parent
b134f3ff63
commit
277cbf9229
@ -182,7 +182,15 @@ func (sm *StateManager) HandleStateForks(ctx context.Context, root cid.Cid, heig
|
||||
if err == nil {
|
||||
if ok {
|
||||
log.Infow("CACHED migration", "height", height, "from", root, "to", migCid)
|
||||
return migCid, nil
|
||||
foundMigratedRoot, err := sm.ChainStore().StateBlockstore().Has(ctx, migCid)
|
||||
if err != nil {
|
||||
log.Errorw("failed to check whether previous migration result is present", "err", err)
|
||||
} else if !foundMigratedRoot {
|
||||
log.Errorw("cached migration result not found in blockstore, running migration again")
|
||||
u.migrationResultCache.Delete(ctx, root)
|
||||
} else {
|
||||
return migCid, nil
|
||||
}
|
||||
}
|
||||
} else if !errors.Is(err, datastore.ErrNotFound) {
|
||||
log.Errorw("failed to lookup previous migration result", "err", err)
|
||||
|
@ -113,6 +113,10 @@ func (m *migrationResultCache) Store(ctx context.Context, root cid.Cid, resultCi
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *migrationResultCache) Delete(ctx context.Context, root cid.Cid) {
|
||||
_ = m.ds.Delete(ctx, m.keyForMigration(root))
|
||||
}
|
||||
|
||||
type Executor interface {
|
||||
NewActorRegistry() *vm.ActorRegistry
|
||||
ExecuteTipSet(ctx context.Context, sm *StateManager, ts *types.TipSet, em ExecMonitor, vmTracing bool) (stateroot cid.Cid, rectsroot cid.Cid, err error)
|
||||
|
Loading…
Reference in New Issue
Block a user