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 +4/−0
- examples/random-points.hs +1/−1
- influxdb.cabal +2/−2
- src/Database/InfluxDB/Http.hs +4/−10
- src/Database/InfluxDB/Types.hs +22/−6
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 }