packages feed

influxdb 0.4.0 → 0.4.1

raw patch · 5 files changed

+33/−19 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Database.InfluxDB.Types: newServerPoolWithRetrySettings :: RetrySettings -> Server -> [Server] -> IO (IORef ServerPool)
+ Database.InfluxDB.Types: serverRetrySettings :: ServerPool -> RetrySettings

Files

CHANGELOG.md view
@@ -1,3 +1,7 @@+## v0.4.1 - 2014-06-05++* Make retry settings configurable (#5)+ ## v0.4.0 - 2014-06-05  * Remove `databaseReplicationFactor` field from `Database` type
examples/random-points.hs view
@@ -67,7 +67,7 @@  newConfig :: HC.Manager -> IO Config newConfig manager = do-  pool <- newServerPool localServer [] -- no backup servers+  pool <- newServerPool localServer []   return Config     { configCreds = rootCreds     , configServerPool = pool
influxdb.cabal view
@@ -1,5 +1,5 @@ name: influxdb-version: 0.4.0+version: 0.4.1 synopsis: Haskell client library for InfluxDB description: Haskell client library for InfluxDB homepage: https://github.com/maoe/influxdb-haskell@@ -141,5 +141,5 @@  source-repository this   type: git-  tag: v0.4.0+  tag: v0.4.1   location: https://github.com/maoe/influxdb-haskell.git
src/Database/InfluxDB/Http.hs view
@@ -59,7 +59,7 @@ import Control.Monad.Identity import Control.Monad.Writer import Data.DList (DList)-import Data.IORef (IORef)+import Data.IORef import Data.Proxy import Data.Text (Text) import Data.Vector (Vector)@@ -655,8 +655,9 @@   -> HC.Request   -> (HC.Request -> IO a)   -> IO a-withPool pool request f =-  recovering defaultRetrySettings handlers $ do+withPool pool request f = do+  retrySettings <- serverRetrySettings <$> readIORef pool+  recovering retrySettings handlers $ do     server <- activeServer pool     f $ makeRequest server   where@@ -672,13 +673,6 @@             return True           _ -> return False       ]--defaultRetrySettings :: RetrySettings-defaultRetrySettings = RetrySettings-  { numRetries = limitedRetries 5-  , backoff = True-  , baseDelay = 50-  }  escapeText :: Text -> BS.ByteString escapeText = escapeString . T.unpack
src/Database/InfluxDB/Types.hs view
@@ -23,7 +23,9 @@    -- * Server pool   , ServerPool+  , serverRetrySettings   , newServerPool+  , newServerPoolWithRetrySettings   , activeServer   , failover   ) where@@ -38,6 +40,7 @@ import Data.Vector (Vector) import qualified Data.Sequence as Seq +import Control.Retry (RetrySettings(..), limitedRetries) import Data.Aeson ((.=), (.:)) import Data.Aeson.TH import qualified Data.Aeson as A@@ -173,6 +176,7 @@   -- ^ Current active server   , serverBackup :: !(Seq Server)   -- ^ The rest of the servers in the pool.+  , serverRetrySettings :: !RetrySettings   }  newtype Database = Database@@ -201,11 +205,23 @@ -- | Create a non-empty server pool. You must specify at least one server -- location to create a pool. newServerPool :: Server -> [Server] -> IO (IORef ServerPool)-newServerPool active backups = newIORef ServerPool-  { serverActive = active-  , serverBackup = Seq.fromList backups-  }+newServerPool = newServerPoolWithRetrySettings defaultRetrySettings+  where+    defaultRetrySettings = RetrySettings+      { numRetries = limitedRetries 5+      , backoff = True+      , baseDelay = 50+      } +newServerPoolWithRetrySettings+    :: RetrySettings -> Server -> [Server] -> IO (IORef ServerPool)+newServerPoolWithRetrySettings retrySettings active backups =+  newIORef ServerPool+    { serverActive = active+    , serverBackup = Seq.fromList backups+    , serverRetrySettings = retrySettings+    }+ -- | Get a server from the pool. activeServer :: IORef ServerPool -> IO Server activeServer ref = do@@ -219,9 +235,9 @@ failover ref = atomicModifyIORef' ref $ \pool@ServerPool {..} ->   case Seq.viewl serverBackup of     EmptyL -> (pool, ())-    active :< rest -> (pool', ())+    active :< rest -> (newPool, ())       where-        pool' = ServerPool+        newPool = pool           { serverActive = active           , serverBackup = rest |> serverActive           }