diff --git a/storage/miner.go b/storage/miner.go index a3f749798..d4c122f03 100644 --- a/storage/miner.go +++ b/storage/miner.go @@ -100,6 +100,8 @@ func (m *Miner) Run(ctx context.Context) error { evts := events.NewEvents(ctx, m.api) m.sealing = sealing.New(m.api, evts, m.maddr, m.worker, m.ds, m.sb, m.tktFn) + go m.sealing.Run(ctx) + return nil } diff --git a/storage/sealing/fsm.go b/storage/sealing/fsm.go index 5c37020d2..e470290a9 100644 --- a/storage/sealing/fsm.go +++ b/storage/sealing/fsm.go @@ -44,7 +44,10 @@ var fsmPlanners = []func(events []statemachine.Event, state *SectorInfo) error{ on(SectorPreCommitFailed{}, api.PreCommitFailed), ), api.Committing: planCommitting, - api.CommitWait: planOne(on(SectorProving{}, api.Proving)), + api.CommitWait: planOne( + on(SectorProving{}, api.Proving), + on(SectorCommitFailed{}, api.CommitFailed), + ), api.Proving: planOne( on(SectorFaultReported{}, api.FaultReported), @@ -238,6 +241,6 @@ func planOne(ts ...func() (mut mutator, next api.SectorState)) func(events []sta return nil } - return xerrors.Errorf("planner for state %s received unexpected event %+v", events[0]) + return xerrors.Errorf("planner for state %s received unexpected event %+v", api.SectorStates[state.State], events[0]) } } diff --git a/storage/sealing/fsm_events.go b/storage/sealing/fsm_events.go index 8392d13e7..4f7c61d15 100644 --- a/storage/sealing/fsm_events.go +++ b/storage/sealing/fsm_events.go @@ -97,7 +97,11 @@ func (evt SectorSeedReady) apply(state *SectorInfo) { } type SectorSealCommitFailed struct{ error } + type SectorCommitFailed struct{ error } + +func (evt SectorCommitFailed) apply(*SectorInfo) {} + type SectorCommitted struct { message cid.Cid proof []byte diff --git a/storage/sealing/sealing.go b/storage/sealing/sealing.go index 5b8ce1bb5..7899415e8 100644 --- a/storage/sealing/sealing.go +++ b/storage/sealing/sealing.go @@ -80,8 +80,6 @@ func New(api sealingApi, events *events.Events, maddr address.Address, worker ad } func (m *Sealing) Run(ctx context.Context) error { - m.events = events.NewEvents(ctx, m.api) - if err := m.restartSectors(ctx); err != nil { log.Errorf("%+v", err) return xerrors.Errorf("failed load sector states: %w", err)