@@ -127,6 +127,11 @@ import Control.Distributed.Process
127 , monitorNode
127 , monitorNode
128 , unmonitor
128 , unmonitor
129 , NodeMonitorNotification(..)
129 , NodeMonitorNotification(..)
131import qualified Control.Distributed.Process.Node as Node
136import qualified Control.Distributed.Process.Node as Node
132 ( LocalNode
137 ( LocalNode
@@ -349,7 +354,19 @@ startMaster backend proc = do
349 Node.runProcess node $ do
354 Node.runProcess node $ do
350 slaves <- findSlaves backend
355 slaves <- findSlaves backend
351 redirectLogsHere backend
356 redirectLogsHere backend
352− proc slaves
357+ proc slaves `finally` shutdownLogger
360+-- | shut down the logger process. This ensures that any pending
361+-- messages are flushed before the process exits.
363+shutdownLogger :: Process ()
365+ (sport,rport) <- newChan
366+ nsend "logger" (sport :: SendPort ())
368+ -- TODO: we should monitor the logger process so we don't deadlock if
369+ -- it has already died.
354--------------------------------------------------------------------------------
371--------------------------------------------------------------------------------
355-- Accessors --
372-- Accessors --