@@ -39,7 +39,8 @@ import Control.Concurrent.Class.MonadSTM (MonadSTM)
3939import Control.DeepSeq (NFData (.. ))
4040import Control.Monad (void )
4141import Control.Monad.Class.MonadST (MonadST )
42- import Control.Monad.Class.MonadThrow (MonadMask , bracketOnError )
42+ import Control.Monad.Class.MonadThrow (MonadMask , bracket ,
43+ bracketOnError )
4344import Control.Monad.Primitive (PrimMonad )
4445import Control.RefCount
4546import Data.Foldable (sequenceA_ )
@@ -652,14 +653,17 @@ fromSnapLevels hfs hbio uc conf resolve reg dir (SnapLevels levels) =
652653 newIncomingSingleRun run
653654
654655 fromSnapIncomingRun ln (SnapMergingRun mergePolicy nominalDebt
655- nominalCredits smrs) = do
656- mr <- fromSnapMergingRunState hfs hbio uc resolve dir smrs
657- ir <- newIncomingMergingRun mergePolicy nominalDebt mr
658- -- This will set the correct nominal credits, but it will not do any more
659- -- merging work because fromSnapMergingRunState already supplies all the
660- -- merging credits already.
661- supplyCreditsIncomingRun conf ln ir nominalCredits
662- return ir
656+ nominalCredits smrs) =
657+ bracket
658+ (fromSnapMergingRunState hfs hbio uc resolve dir smrs)
659+ releaseRef $ \ mr -> do
660+
661+ ir <- newIncomingMergingRun mergePolicy nominalDebt mr
662+ -- This will set the correct nominal credits, but it will not do any
663+ -- more merging work because fromSnapMergingRunState already supplies
664+ -- all the merging credits already.
665+ supplyCreditsIncomingRun conf ln ir nominalCredits
666+ return ir
663667
664668{-# SPECIALISE fromSnapMergingRunState ::
665669 MR.IsMergeType t
0 commit comments