Skip to content

Commit 3131f7c

Browse files
committed
Remove V2 forkers from registry on close
1 parent 6ef5e33 commit 3131f7c

File tree

2 files changed

+8
-7
lines changed
  • ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/LedgerDB

2 files changed

+8
-7
lines changed

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/LedgerDB/V2.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -667,8 +667,8 @@ closeForkerEnv :: IOLike m => (LedgerDBEnv m l blk, ForkerEnv m l blk) -> m ()
667667
closeForkerEnv (LedgerDBEnv{ldbOpenHandlesLock}, frkEnv) =
668668
RAWLock.withWriteAccess ldbOpenHandlesLock $
669669
const $ do
670-
id =<< readTVarIO (foeResourcesToRelease frkEnv)
671-
atomically $ writeTVar (foeResourcesToRelease frkEnv) (pure ())
670+
id =<< (atomically $ swapTVar (snd $ foeResourcesToRelease frkEnv) (pure ()))
671+
_ <- release (fst (foeResourcesToRelease frkEnv))
672672
pure ((), LDBLock)
673673

674674
getForkerEnv ::
@@ -753,14 +753,14 @@ newForker h ldbEnv rr st = do
753753
let tr = LedgerDBForkerEvent . TraceForkerEventWithKey forkerKey >$< ldbTracer ldbEnv
754754
traceWith tr ForkerOpen
755755
lseqVar <- newTVarIO . LedgerSeq . AS.Empty $ st
756-
(_, toRelease) <- allocate rr (\_ -> newTVarIO (pure ())) (readTVarIO Monad.>=> id)
756+
(k, toRelease) <- allocate rr (\_ -> newTVarIO (pure ())) (readTVarIO Monad.>=> id)
757757
let forkerEnv =
758758
ForkerEnv
759759
{ foeLedgerSeq = lseqVar
760760
, foeSwitchVar = ldbSeq ldbEnv
761761
, foeSecurityParam = ledgerDbCfgSecParam $ ldbCfg ldbEnv
762762
, foeTracer = tr
763-
, foeResourcesToRelease = toRelease
763+
, foeResourcesToRelease = (k, toRelease)
764764
}
765765
atomically $ modifyTVar (ldbForkers ldbEnv) $ Map.insert forkerKey forkerEnv
766766
pure $

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/LedgerDB/V2/Forker.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module Ouroboros.Consensus.Storage.LedgerDB.V2.Forker
1919
, module Ouroboros.Consensus.Storage.LedgerDB.Forker
2020
) where
2121

22+
import Control.ResourceRegistry
2223
import Control.Tracer
2324
import Data.Maybe (fromMaybe)
2425
import GHC.Generics
@@ -51,7 +52,7 @@ data ForkerEnv m l blk = ForkerEnv
5152
-- ^ Config
5253
, foeTracer :: !(Tracer m TraceForkerEvent)
5354
-- ^ Config
54-
, foeResourcesToRelease :: !(StrictTVar m (m ()))
55+
, foeResourcesToRelease :: !(ResourceKey m, StrictTVar m (m ()))
5556
-- ^ Release the resources
5657
}
5758
deriving Generic
@@ -132,7 +133,7 @@ implForkerPush env newState = do
132133
traceWith (foeTracer env) ForkerPushEnd
133134
atomically $ do
134135
writeTVar (foeLedgerSeq env) lseq'
135-
modifyTVar (foeResourcesToRelease env) (>> close newtbs)
136+
modifyTVar (snd $ foeResourcesToRelease env) (>> close newtbs)
136137
)
137138

138139
implForkerCommit ::
@@ -171,7 +172,7 @@ implForkerCommit env = do
171172
-- actions for closing the states pushed to the forker. As we are committing
172173
-- those we have to close the ones discarded in this function and forget about
173174
-- those releasing actions.
174-
writeTVar foeResourcesToRelease closeDiscarded
175+
writeTVar (snd foeResourcesToRelease) closeDiscarded
175176
where
176177
ForkerEnv
177178
{ foeLedgerSeq

0 commit comments

Comments
 (0)