git.iko.soy/distributed-process
on master help sign in
Merge pull request #179 from tweag/trace-loop
c8cd933Tim Watson
src/Control/Distributed/Process/Management/Internal/Trace/Tracer.hs+1−1
@@ -146,7 +146,7 @@ systemLoggerTracer = do
146 emptyPid <- return $ (nullProcessId (localNodeId node))
146 emptyPid <- return $ (nullProcessId (localNodeId node))
147 traceMsg <- return $ NCMsg {
147 traceMsg <- return $ NCMsg {
148 ctrlMsgSender = ProcessIdentifier (emptyPid)
148 ctrlMsgSender = ProcessIdentifier (emptyPid)
149− , ctrlMsgSignal = (NamedSend "logger"
149+ , ctrlMsgSignal = (NamedSend "trace.logger"
150 (createUnencodedMessage msg))
150 (createUnencodedMessage msg))
151 }
151 }
152 liftIO $ writeChan (localCtrlChan node) traceMsg
152 liftIO $ writeChan (localCtrlChan node) traceMsg
src/Control/Distributed/Process/Node.hs+6−1
@@ -295,7 +295,12 @@ startServiceProcesses node = do
295 tableCoordinatorPid <- fork $ Table.startTableCoordinator fork
295 tableCoordinatorPid <- fork $ Table.startTableCoordinator fork
296 runProcess node $ register Table.mxTableCoordinator tableCoordinatorPid
296 runProcess node $ register Table.mxTableCoordinator tableCoordinatorPid
297 logger <- forkProcess node loop
297 logger <- forkProcess node loop
298+ runProcess node $ do
299+ register "logger" logger
300+ -- The trace.logger is used for tracing to the console to avoid feedback
301+ -- loops during tracing if the user reregisters the "logger" with a custom
302+ -- process which uses 'send' or other primitives which are traced.
298− runProcess node $ register "logger" logger
303+ register "trace.logger" logger
299 where
304 where
300 fork = forkProcess node
305 fork = forkProcess node
301
306