On Thu, Jul 16, 2015 at 12:35:38PM +0200, Klaus Aehlig wrote:
>+-- | Try an RPC until no errors occur and the result is true.
>+runModifyRpc :: RpcClientMonad Bool -> IO ()
>+runModifyRpc action = do
>+ res <- runResultT $ do
>+ wconfdClient <- liftIO $ getWConfdClient =<< Path.defaultWConfdSocket
>+ runRpcClient action wconfdClient
Also here I'd suggest to close the client.
Interdiff
commit e56ff3868b717ea175f45cc2db7df7f10e506154
Author: Klaus Aehlig <aeh...@google.com>
Date: Thu Jul 16 11:33:42 2015 +0200
Interdiff [PATCH master 14/16] Add a utility function to try an RPC until it
returns True
diff --git a/src/Ganeti/WConfd/Client.hs b/src/Ganeti/WConfd/Client.hs
index 7f54888..1e0be49 100644
--- a/src/Ganeti/WConfd/Client.hs
+++ b/src/Ganeti/WConfd/Client.hs
@@ -43,7 +43,6 @@ import Control.Exception.Lifted (bracket)
import Control.Monad (unless)
import Control.Monad.Base
import Control.Monad.Error (MonadError)
-import Control.Monad.IO.Class (liftIO)
import Control.Monad.Trans.Control (MonadBaseControl)
import Ganeti.BasicTypes (runResultT, GenericResult(..))
@@ -106,12 +105,12 @@ withLockedConfig c shared =
bracket (waitLockConfig c shared) (const $ unlockConfig c)
+-- * Other functions
+
-- | Try an RPC until no errors occur and the result is true.
runModifyRpc :: RpcClientMonad Bool -> IO ()
runModifyRpc action = do
- res <- runResultT $ do
- wconfdClient <- liftIO $ getWConfdClient =<< Path.defaultWConfdSocket
- runRpcClient action wconfdClient
+ res <- runResultT $ runNewWConfdClient action
unless (res == Ok True) $ do
threadDelay 100000 -- sleep 0.1 seconds
runModifyRpc action
--
Klaus Aehlig
Google Germany GmbH, Dienerstr. 12, 80331 Muenchen
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores
LGTM, thanks