@@ -7,7 +7,7 @@ module Database.LSMTree.Internal.Snapshot (
77 , SnapLevels (.. )
88 , SnapLevel (.. )
99 , SnapIncomingRun (.. )
10- , SnapMergingRunState (.. )
10+ , SnapMergingRun (.. )
1111 -- * MergeTree snapshot format
1212 , SnapMergingTree (.. )
1313 , SnapMergingTreeState (.. )
@@ -170,31 +170,32 @@ instance NFData r => NFData (SnapLevel r) where
170170-- both to zero).
171171--
172172data SnapIncomingRun r =
173- SnapMergingRun ! MergePolicyForLevel
174- ! NominalDebt
175- ! NominalCredits -- ^ The nominal credits supplied, and that
176- -- need to be supplied on snapshot open.
177- ! (SnapMergingRunState MR. LevelMergeType r )
178- | SnapSingleRun ! r
173+ SnapIncomingMergingRun
174+ ! MergePolicyForLevel
175+ ! NominalDebt
176+ ! NominalCredits -- ^ The nominal credits supplied, and that
177+ -- need to be supplied on snapshot open.
178+ ! (SnapMergingRun MR. LevelMergeType r )
179+ | SnapIncomingSingleRun ! r
179180 deriving stock (Eq , Functor , Foldable , Traversable )
180181
181182instance NFData r => NFData (SnapIncomingRun r ) where
182- rnf (SnapMergingRun a b c d) =
183+ rnf (SnapIncomingMergingRun a b c d) =
183184 rnf a `seq` rnf b `seq` rnf c `seq` rnf d
184- rnf (SnapSingleRun a) = rnf a
185+ rnf (SnapIncomingSingleRun a) = rnf a
185186
186187-- | The total number of supplied credits. This total is used on snapshot load
187188-- to restore merging work that was lost when the snapshot was created.
188189newtype SuppliedCredits = SuppliedCredits { getSuppliedCredits :: Int }
189190 deriving stock (Eq , Read )
190191 deriving newtype NFData
191192
192- data SnapMergingRunState t r =
193+ data SnapMergingRun t r =
193194 SnapCompletedMerge ! NumRuns ! MergeDebt ! r
194195 | SnapOngoingMerge ! RunParams ! MergeCredits ! (V. Vector r ) ! t
195196 deriving stock (Eq , Functor , Foldable , Traversable )
196197
197- instance (NFData t , NFData r ) => NFData (SnapMergingRunState t r ) where
198+ instance (NFData t , NFData r ) => NFData (SnapMergingRun t r ) where
198199 rnf (SnapCompletedMerge a b c) = rnf a `seq` rnf b `seq` rnf c
199200 rnf (SnapOngoingMerge a b c d) = rnf a `seq` rnf b `seq` rnf c `seq` rnf d
200201
@@ -208,9 +209,8 @@ newtype SnapMergingTree r = SnapMergingTree (SnapMergingTreeState r)
208209
209210data SnapMergingTreeState r =
210211 SnapCompletedTreeMerge ! r
211- | SnapPendingTreeMerge ! (SnapPendingMerge r )
212- | SnapOngoingTreeMerge
213- ! (SnapMergingRunState MR. TreeMergeType r )
212+ | SnapPendingTreeMerge ! (SnapPendingMerge r )
213+ | SnapOngoingTreeMerge ! (SnapMergingRun MR. TreeMergeType r )
214214 deriving stock (Eq , Functor , Foldable , Traversable )
215215
216216instance NFData r => NFData (SnapMergingTreeState r ) where
@@ -231,9 +231,8 @@ instance NFData r => NFData (SnapPendingMerge r) where
231231 rnf (SnapPendingUnionMerge a) = rnf a
232232
233233data SnapPreExistingRun r =
234- SnapPreExistingRun ! r
235- | SnapPreExistingMergingRun
236- ! (SnapMergingRunState MR. LevelMergeType r )
234+ SnapPreExistingRun ! r
235+ | SnapPreExistingMergingRun ! (SnapMergingRun MR. LevelMergeType r )
237236 deriving stock (Eq , Functor , Foldable , Traversable )
238237
239238instance NFData r => NFData (SnapPreExistingRun r ) where
@@ -307,7 +306,7 @@ fromSnapMergingTree hfs hbio uc resolve dir =
307306
308307 go reg (SnapMergingTree (SnapOngoingTreeMerge smrs)) = do
309308 mr <- withRollback reg
310- (fromSnapMergingRunState hfs hbio uc resolve dir smrs)
309+ (fromSnapMergingRun hfs hbio uc resolve dir smrs)
311310 releaseRef
312311 mt <- withRollback reg
313312 (MT. newOngoingMerge mr)
@@ -325,7 +324,7 @@ fromSnapMergingTree hfs hbio uc resolve dir =
325324 fromSnapPreExistingRun reg (SnapPreExistingMergingRun smrs) =
326325 MT. PreExistingMergingRun <$>
327326 withRollback reg
328- (fromSnapMergingRunState hfs hbio uc resolve dir smrs)
327+ (fromSnapMergingRun hfs hbio uc resolve dir smrs)
329328 releaseRef
330329
331330 releasePER (MT. PreExistingRun r) = releaseRef r
@@ -351,7 +350,7 @@ toSnapMergingTreeState ::
351350toSnapMergingTreeState (MT. CompletedTreeMerge r) = pure $ SnapCompletedTreeMerge r
352351toSnapMergingTreeState (MT. PendingTreeMerge p) = SnapPendingTreeMerge <$> toSnapPendingMerge p
353352toSnapMergingTreeState (MT. OngoingTreeMerge mergingRun) =
354- SnapOngoingTreeMerge <$> toSnapMergingRunState mergingRun
353+ SnapOngoingTreeMerge <$> toSnapMergingRun mergingRun
355354
356355{-# SPECIALISE toSnapPendingMerge :: MT.PendingMerge IO h -> IO (SnapPendingMerge (Ref (Run IO h))) #-}
357356toSnapPendingMerge ::
@@ -372,7 +371,7 @@ toSnapPreExistingRun ::
372371 -> m (SnapPreExistingRun (Ref (Run m h )))
373372toSnapPreExistingRun (MT. PreExistingRun run) = pure $ SnapPreExistingRun run
374373toSnapPreExistingRun (MT. PreExistingMergingRun peMergingRun) =
375- SnapPreExistingMergingRun <$> toSnapMergingRunState peMergingRun
374+ SnapPreExistingMergingRun <$> toSnapMergingRun peMergingRun
376375
377376{- ------------------------------------------------------------------------------
378377 Conversion to levels snapshot format
@@ -408,24 +407,24 @@ toSnapIncomingRun ::
408407toSnapIncomingRun ir = do
409408 s <- snapshotIncomingRun ir
410409 case s of
411- Left r -> pure $! SnapSingleRun r
410+ Left r -> pure $! SnapIncomingSingleRun r
412411 Right (mergePolicy,
413412 nominalDebt,
414413 nominalCredits,
415414 mergingRun) -> do
416415 -- We need to know how many credits were supplied so we can restore merge
417416 -- work on snapshot load.
418- smrs <- toSnapMergingRunState mergingRun
419- pure $! SnapMergingRun mergePolicy nominalDebt nominalCredits smrs
417+ smrs <- toSnapMergingRun mergingRun
418+ pure $! SnapIncomingMergingRun mergePolicy nominalDebt nominalCredits smrs
420419
421- {-# SPECIALISE toSnapMergingRunState ::
420+ {-# SPECIALISE toSnapMergingRun ::
422421 Ref (MR.MergingRun t IO h)
423- -> IO (SnapMergingRunState t (Ref (Run IO h))) #-}
424- toSnapMergingRunState ::
422+ -> IO (SnapMergingRun t (Ref (Run IO h))) #-}
423+ toSnapMergingRun ::
425424 (PrimMonad m , MonadMVar m )
426425 => Ref (MR. MergingRun t m h )
427- -> m (SnapMergingRunState t (Ref (Run m h )))
428- toSnapMergingRunState ! mr = do
426+ -> m (SnapMergingRun t (Ref (Run m h )))
427+ toSnapMergingRun ! mr = do
429428 -- TODO: MR.snapshot needs to return duplicated run references, and we
430429 -- need to arrange to release them when the snapshotting is done.
431430 (numRuns, mergeDebt, mergeCredits, state) <- MR. snapshot mr
@@ -680,47 +679,46 @@ fromSnapLevels hfs hbio uc conf resolve reg dir (SnapLevels levels) =
680679 LevelNo
681680 -> SnapIncomingRun (Ref (Run m h ))
682681 -> m (IncomingRun m h )
683- fromSnapIncomingRun _ln (SnapSingleRun run) =
682+ fromSnapIncomingRun _ln (SnapIncomingSingleRun run) =
684683 newIncomingSingleRun run
685684
686- fromSnapIncomingRun ln (SnapMergingRun mergePolicy nominalDebt
687- nominalCredits smrs) =
685+ fromSnapIncomingRun ln (SnapIncomingMergingRun mergePolicy nominalDebt
686+ nominalCredits smrs) =
688687 bracket
689- (fromSnapMergingRunState hfs hbio uc resolve dir smrs)
688+ (fromSnapMergingRun hfs hbio uc resolve dir smrs)
690689 releaseRef $ \ mr -> do
691690
692691 ir <- newIncomingMergingRun mergePolicy nominalDebt mr
693692 -- This will set the correct nominal credits, but it will not do any
694- -- more merging work because fromSnapMergingRunState already supplies
693+ -- more merging work because fromSnapMergingRun already supplies
695694 -- all the merging credits already.
696695 supplyCreditsIncomingRun conf ln ir nominalCredits
697696 return ir
698697
699- {-# SPECIALISE fromSnapMergingRunState ::
698+ {-# SPECIALISE fromSnapMergingRun ::
700699 MR.IsMergeType t
701700 => HasFS IO h
702701 -> HasBlockIO IO h
703702 -> UniqCounter IO
704703 -> ResolveSerialisedValue
705704 -> ActiveDir
706- -> SnapMergingRunState t (Ref (Run IO h))
705+ -> SnapMergingRun t (Ref (Run IO h))
707706 -> IO (Ref (MR.MergingRun t IO h)) #-}
708- fromSnapMergingRunState ::
707+ fromSnapMergingRun ::
709708 (MonadMask m , MonadMVar m , MonadSTM m , MonadST m , MR. IsMergeType t )
710709 => HasFS m h
711710 -> HasBlockIO m h
712711 -> UniqCounter m
713712 -> ResolveSerialisedValue
714713 -> ActiveDir
715- -> SnapMergingRunState t (Ref (Run m h ))
714+ -> SnapMergingRun t (Ref (Run m h ))
716715 -> m (Ref (MR. MergingRun t m h ))
717- fromSnapMergingRunState _hfs _hbio _uc _resolve _dir
718- (SnapCompletedMerge numRuns mergeDebt r) =
716+ fromSnapMergingRun _hfs _hbio _uc _resolve _dir
717+ (SnapCompletedMerge numRuns mergeDebt r) =
719718 MR. newCompleted numRuns mergeDebt r
720719
721- fromSnapMergingRunState hfs hbio uc resolve dir
722- (SnapOngoingMerge runParams mergeCredits
723- rs mergeType) = do
720+ fromSnapMergingRun hfs hbio uc resolve dir
721+ (SnapOngoingMerge runParams mergeCredits rs mergeType) = do
724722 bracketOnError
725723 (do uniq <- incrUniqCounter uc
726724 let runPaths = runPath dir (uniqueToRunNumber uniq)
0 commit comments