create the transactional protect filter before walking
This commit is contained in:
parent
e4bb4be855
commit
5834231e58
@ -963,6 +963,22 @@ func (s *SplitStore) doCompact(curTs *types.TipSet) error {
|
||||
defer markSet.Close() //nolint:errcheck
|
||||
defer s.debug.Flush()
|
||||
|
||||
// create the transaction protect filter
|
||||
s.txnLk.Lock()
|
||||
s.txnProtect, err = s.txnEnv.Create("protected", s.markSetSize)
|
||||
if err != nil {
|
||||
s.txnLk.Unlock()
|
||||
return xerrors.Errorf("error creating transactional mark set: %w", err)
|
||||
}
|
||||
s.txnLk.Unlock()
|
||||
|
||||
defer func() {
|
||||
s.txnLk.Lock()
|
||||
_ = s.txnProtect.Close()
|
||||
s.txnProtect = nil
|
||||
s.txnLk.Unlock()
|
||||
}()
|
||||
|
||||
// 1. mark reachable objects by walking the chain from the current epoch to the boundary epoch
|
||||
log.Infow("marking reachable blocks", "currentEpoch", currentEpoch, "boundaryEpoch", boundaryEpoch)
|
||||
startMark := time.Now()
|
||||
@ -984,22 +1000,6 @@ func (s *SplitStore) doCompact(curTs *types.TipSet) error {
|
||||
|
||||
log.Infow("marking done", "took", time.Since(startMark), "marked", count)
|
||||
|
||||
// create the transaction protect filter
|
||||
s.txnLk.Lock()
|
||||
s.txnProtect, err = s.txnEnv.Create("protected", s.markSetSize)
|
||||
if err != nil {
|
||||
s.txnLk.Unlock()
|
||||
return xerrors.Errorf("error creating transactional mark set: %w", err)
|
||||
}
|
||||
s.txnLk.Unlock()
|
||||
|
||||
defer func() {
|
||||
s.txnLk.Lock()
|
||||
_ = s.txnProtect.Close()
|
||||
s.txnProtect = nil
|
||||
s.txnLk.Unlock()
|
||||
}()
|
||||
|
||||
// flush pending writes to update the tracker
|
||||
log.Info("flushing pending writes")
|
||||
startFlush := time.Now()
|
||||
|
Loading…
Reference in New Issue
Block a user