diff --git a/Database/MongoDB/Query.hs b/Database/MongoDB/Query.hs index 1d6827f..f8201f0 100644 --- a/Database/MongoDB/Query.hs +++ b/Database/MongoDB/Query.hs @@ -47,7 +47,7 @@ import Data.Int (Int32) import Data.Maybe (listToMaybe, catMaybes) import Data.Word (Word32) -import Control.Concurrent.MVar.Lifted (MVar, newMVar, addMVarFinalizer, +import Control.Concurrent.MVar.Lifted (MVar, newMVar, mkWeakMVar, readMVar, modifyMVar) import Control.Monad.Base (MonadBase(liftBase)) import Control.Monad.Error (ErrorT, Error(..), MonadError, runErrorT, @@ -509,7 +509,7 @@ newCursor :: (MonadIO m, MonadBaseControl IO m) => Database -> Collection -> Bat newCursor db col batchSize dBatch = do var <- newMVar dBatch let cursor = Cursor (db <.> col) batchSize var - addMVarFinalizer var (closeCursor cursor) + mkWeakMVar var (closeCursor cursor) return cursor nextBatch :: (MonadIO m, MonadBaseControl IO m) => Cursor -> Action m [Document] diff --git a/System/IO/Pipeline.hs b/System/IO/Pipeline.hs index e88c40c..97b25a8 100644 --- a/System/IO/Pipeline.hs +++ b/System/IO/Pipeline.hs @@ -20,7 +20,7 @@ import GHC.Conc (ThreadStatus(..), threadStatus) import Control.Monad.Trans (liftIO) import Control.Concurrent.MVar.Lifted (MVar, newEmptyMVar, newMVar, withMVar, - putMVar, readMVar, addMVarFinalizer) + putMVar, readMVar, mkWeakMVar) import Control.Monad.Error (ErrorT(ErrorT), runErrorT) onException :: (Monad m) => ErrorT e m a -> m () -> ErrorT e m a @@ -58,7 +58,7 @@ newPipeline stream = do rec let pipe = Pipeline{..} listenThread <- forkIO (listen pipe) - addMVarFinalizer vStream $ do + mkWeakMVar vStream $ do killThread listenThread closeStream stream return pipe