Commit
30d25dd8 moved the htools code to new-style exception handling,
but the hconfd code hasn't been, which fails when compiling on newer
GHC versions.
This patch does the rest of the move; however, the situation is not
very nice, we should have a better way to handle this (introduce
catchIO? or something like that).
Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
) where
import Control.Concurrent
+import Control.Exception
import Control.Monad (forever)
import qualified Data.ByteString as B
import Data.IORef
import Data.List
import qualified Data.Map as M
import qualified Network.Socket as S
+import Prelude hiding (catch)
import System.Posix.Files
import System.Posix.Types
import System.Time
updateConfig path cref
return (nt', ConfigReloaded)
) (\e -> do
- let msg = "Failure during configuration update: " ++ show e
+ let msg = "Failure during configuration update: " ++
+ show (e::IOError)
writeIORef cref (Bad msg)
return (nullFStat, ConfigIOError)
)
addNotifier inotify path cref mstate = do
catch (addWatch inotify [CloseWrite] path
(onInotify inotify path cref mstate) >> return True)
- (const $ return False)
+ (\e -> const (return False) (e::IOError))
-- | Inotify event handler.
onInotify :: INotify -> String -> CRef -> MVar ServerState -> Event -> IO ()
, genericMain
) where
+import Control.Exception
import Control.Monad
import qualified Data.Version
import Data.Word
import qualified Network.Socket as Socket
+import Prelude hiding (catch)
import System.Console.GetOpt
import System.Exit
import System.Environment
_ <- fdWrite fd (show my_pid ++ "\n")
return fd
+-- | Helper to format an IOError.
+formatIOError :: String -> IOError -> String
+formatIOError msg err = msg ++ ": " ++ show err
+
-- | Wrapper over '_writePidFile' that transforms IO exceptions into a
-- 'Bad' value.
writePidFile :: FilePath -> IO (Result Fd)
writePidFile path = do
- catch (fmap Ok $ _writePidFile path) (return . Bad . show)
+ catch (fmap Ok $ _writePidFile path)
+ (return . Bad . formatIOError "Failure during writing of the pid file")
-- | Sets up a daemon's environment.
setupDaemonEnv :: FilePath -> FileMode -> IO ()
import Ganeti.THH
+import Control.Exception
import Control.Monad (liftM)
import Data.Char (isSpace)
import Data.Maybe (fromMaybe)
+import Prelude hiding (catch)
import qualified Network.Socket as Socket
import System.FilePath ((</>))
-import System.IO.Error
+import System.IO.Error (isDoesNotExistError)
import qualified Ganeti.Constants as C
import Ganeti.BasicTypes