On Mon, May 04, 2015 at 03:07:50PM +0200, 'Klaus Aehlig' via ganeti-devel wrote:
...so that we do not accumulate open file descriptors.

Signed-off-by: Klaus Aehlig <[email protected]>
---
src/Ganeti/Query/Exec.hs | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/Ganeti/Query/Exec.hs b/src/Ganeti/Query/Exec.hs
index 8e7ca06..b64b78d 100644
--- a/src/Ganeti/Query/Exec.hs
+++ b/src/Ganeti/Query/Exec.hs
@@ -62,6 +62,7 @@ module Ganeti.Query.Exec

import Control.Concurrent (rtsSupportsBoundThreads)
import Control.Concurrent.Lifted (threadDelay)
+import Control.Exception (finally)
import Control.Monad
import Control.Monad.Error
import Data.Functor
@@ -194,8 +195,9 @@ runJobProcess jid s = withErrorLogAt CRITICAL (show jid) $
forkWithPipe :: ConnectConfig -> (Client -> IO ()) -> IO (ProcessID, Client)
forkWithPipe conf childAction = do
  (master, child) <- pipeClient conf
-  pid <- forkProcess (closeClient master >> childAction child)
-  closeClient child
+  pid <- finally
+           (forkProcess (closeClient master >> childAction child))
+           $ closeClient child
  return (pid, master)

-- | Forks the job process and starts processing of the given job.
--
2.2.0.rc0.207.ga3a616c


LGTM, thanks

Reply via email to