git.iko.soy/distributed-process
on master help sign in
Merge pull request #179 from tweag/trace-loop

Break feedback loop when tracing messages to the console.

commitc8cd9339935f8116d841dec202cf891a124a84a8 authorTim Watson <watson.timothy@gmail.com> dateThu 12 Feb 2015, 17:22 (12 years ago) parentdb5aa53a94af5c
2 files changed+7−2
src/Control/Distributed/Process/Management/Internal/Trace/Tracer.hs+1−1 src/Control/Distributed/Process/Node.hs+6−1
src/Control/Distributed/Process/Management/Internal/Trace/Tracer.hs+1−1
@@ -146,7 +146,7 @@ systemLoggerTracer = do
146146 emptyPid <- return $ (nullProcessId (localNodeId node))
147147 traceMsg <- return $ NCMsg {
148148 ctrlMsgSender = ProcessIdentifier (emptyPid)
149− , ctrlMsgSignal = (NamedSend "logger"
149+ , ctrlMsgSignal = (NamedSend "trace.logger"
150150 (createUnencodedMessage msg))
151151 }
152152 liftIO $ writeChan (localCtrlChan node) traceMsg
src/Control/Distributed/Process/Node.hs+6−1
@@ -295,7 +295,12 @@ startServiceProcesses node = do
295295 tableCoordinatorPid <- fork $ Table.startTableCoordinator fork
296296 runProcess node $ register Table.mxTableCoordinator tableCoordinatorPid
297297 logger <- forkProcess node loop
298− runProcess node $ register "logger" logger
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.
303+ register "trace.logger" logger
299304 where
300305 fork = forkProcess node
301306