packages feed

mongoDB 2.3.0.5 → 2.4.0.0

raw patch · 3 files changed

+19/−11 lines, 3 filesdep +stmdep ~tlsPVP ok

version bump matches the API change (PVP)

Dependencies added: stm

Dependency ranges changed: tls

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. This project adheres to [Package Versioning Policy](https://wiki.haskell.org/Package_versioning_policy). +## [2.4.0.0] - 2018-05-03++### Fixed+- GHC 8.4 compatibility. isEmptyChan is not available in base 4.11 anymore.+ ## [2.3.0.5] - 2018-03-15  ### Fixed
Database/MongoDB/Internal/Protocol.hs view
@@ -47,8 +47,9 @@ import Data.Maybe (maybeToList) import GHC.Conc (ThreadStatus(..), threadStatus) import Control.Monad (forever)-import Control.Concurrent.Chan (Chan, newChan, readChan, writeChan, isEmptyChan)+import Control.Monad.STM (atomically) import Control.Concurrent (ThreadId, killThread, forkFinally)+import Control.Concurrent.STM.TChan (TChan, newTChan, readTChan, writeTChan, isEmptyTChan)  import Control.Exception.Lifted (onException, throwIO, try) @@ -87,7 +88,7 @@ -- | Thread-safe and pipelined connection data Pipeline = Pipeline     { vStream :: MVar Transport -- ^ Mutex on handle, so only one thread at a time can write to it-    , responseQueue :: Chan (MVar (Either IOError Response)) -- ^ Queue of threads waiting for responses. Every time a response arrive we pop the next thread and give it the response.+    , responseQueue :: TChan (MVar (Either IOError Response)) -- ^ Queue of threads waiting for responses. Every time a response arrive we pop the next thread and give it the response.     , listenThread :: ThreadId     , finished :: MVar ()     , serverData :: ServerData@@ -106,14 +107,14 @@ newPipeline :: ServerData -> Transport -> IO Pipeline newPipeline serverData stream = do     vStream <- newMVar stream-    responseQueue <- newChan+    responseQueue <- atomically newTChan     finished <- newEmptyMVar     let drainReplies = do-          chanEmpty <- isEmptyChan responseQueue+          chanEmpty <- atomically $ isEmptyTChan responseQueue           if chanEmpty             then return ()             else do-              var <- readChan responseQueue+              var <- atomically $ readTChan responseQueue               putMVar var $ Left $ mkIOError                                         doesNotExistErrorType                                         "Handle has been closed"@@ -159,7 +160,7 @@     stream <- readMVar vStream     forever $ do         e <- try $ readMessage stream-        var <- readChan responseQueue+        var <- atomically $ readTChan responseQueue         putMVar var e         case e of             Left err -> Tr.close stream >> ioError err  -- close and stop looping@@ -182,7 +183,7 @@     doCall stream = do         writeMessage stream message         var <- newEmptyMVar-        liftIO $ writeChan responseQueue var+        liftIO $ atomically $ writeTChan responseQueue var         return $ readMVar var >>= either throwIO return -- return promise  -- * Pipe
mongoDB.cabal view
@@ -1,5 +1,5 @@ Name:           mongoDB-Version:        2.3.0.5+Version:        2.4.0.0 Synopsis:       Driver (client) for MongoDB, a free, scalable, fast, document                 DBMS Description:    This package lets you connect to MongoDB servers and@@ -42,8 +42,9 @@                     , monad-control >= 0.3.1                     , lifted-base >= 0.1.0.3                     , pureMD5+                    , stm                     , tagged-                    , tls >= 1.2.0+                    , tls >= 1.3.0                     , time                     , data-default-class -any                     , transformers@@ -51,7 +52,7 @@                     , hashtables >= 1.1.2.0                     , base16-bytestring >= 0.1.1.6                     , base64-bytestring >= 1.0.0.1-                    , nonce >= 1.0.2+                    , nonce >= 1.0.5    Exposed-modules:  Database.MongoDB                     Database.MongoDB.Admin@@ -105,7 +106,8 @@                     , mtl >= 2                     , cryptohash -any                     , network -any-                    , nonce+                    , nonce >= 1.0.5+                    , stm                     , parsec -any                     , random -any                     , random-shuffle -any