From 299e72458e2db59201e750fea6dddff25786ba5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Sun, 10 Jan 2021 14:01:29 +0100 Subject: [PATCH] storagefsm: Fix unsealedInfoMap.lk init race --- extern/storage-sealing/fsm.go | 3 ++- extern/storage-sealing/sealing.go | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/extern/storage-sealing/fsm.go b/extern/storage-sealing/fsm.go index 09ac8c61ba4..ea4982d2c3f 100644 --- a/extern/storage-sealing/fsm.go +++ b/extern/storage-sealing/fsm.go @@ -409,8 +409,9 @@ func (m *Sealing) restartSectors(ctx context.Context) error { return err } - m.unsealedInfoMap.lk.Lock() + // m.unsealedInfoMap.lk.Lock() taken early in .New to prevent races defer m.unsealedInfoMap.lk.Unlock() + for _, sector := range trackedSectors { if err := m.sectors.Send(uint64(sector.SectorNumber), SectorRestart{}); err != nil { log.Errorf("restarting sector %d: %+v", sector.SectorNumber, err) diff --git a/extern/storage-sealing/sealing.go b/extern/storage-sealing/sealing.go index d0c8fd3c90d..92beb8ddfc1 100644 --- a/extern/storage-sealing/sealing.go +++ b/extern/storage-sealing/sealing.go @@ -145,6 +145,8 @@ func New(api SealingAPI, fc FeeConfig, events Events, maddr address.Address, ds s.sectors = statemachine.New(namespace.Wrap(ds, datastore.NewKey(SectorStorePrefix)), s, SectorInfo{}) + s.unsealedInfoMap.lk.Lock() // released after initialized in .Run() + return s }