Merge pull request #3401 from filecoin-project/asr/unsealed-infos

Rebuild unsealed infos on miner restart
This commit is contained in:
Łukasz Magiera 2020-08-31 10:35:33 +02:00 committed by GitHub
commit 4f45c623a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -376,12 +376,33 @@ func (m *Sealing) restartSectors(ctx context.Context) error {
return xerrors.Errorf("getting the sealing delay: %w", err) return xerrors.Errorf("getting the sealing delay: %w", err)
} }
m.unsealedInfoMap.lk.Lock()
defer m.unsealedInfoMap.lk.Unlock()
for _, sector := range trackedSectors { for _, sector := range trackedSectors {
if err := m.sectors.Send(uint64(sector.SectorNumber), SectorRestart{}); err != nil { if err := m.sectors.Send(uint64(sector.SectorNumber), SectorRestart{}); err != nil {
log.Errorf("restarting sector %d: %+v", sector.SectorNumber, err) log.Errorf("restarting sector %d: %+v", sector.SectorNumber, err)
} }
if sector.State == WaitDeals { if sector.State == WaitDeals {
// put the sector in the unsealedInfoMap
if _, ok := m.unsealedInfoMap.infos[sector.SectorNumber]; ok {
// something's funky here, but probably safe to move on
log.Warnf("sector %v was already in the unsealedInfoMap when restarting", sector.SectorNumber)
} else {
ui := UnsealedSectorInfo{}
for _, p := range sector.Pieces {
if p.DealInfo != nil {
ui.numDeals++
}
ui.stored += p.Piece.Size
ui.pieceSizes = append(ui.pieceSizes, p.Piece.Size.Unpadded())
}
m.unsealedInfoMap.infos[sector.SectorNumber] = ui
}
// start a fresh timer for the sector
if cfg.WaitDealsDelay > 0 { if cfg.WaitDealsDelay > 0 {
timer := time.NewTimer(cfg.WaitDealsDelay) timer := time.NewTimer(cfg.WaitDealsDelay)
go func() { go func() {