Following the tutorials (http://haskell-distributed.github.io), this code – after calling dev in GHCi – lets one CPU core spin up to 100% and stays at that level indefinitely. This seem to happen due to the call to closeTransport.
However, evaluating the code in GHCi line by line, does not show this effect. So where does the difference come from and how can I correctly clean up?
import Network.Transport (closeTransport)
import Network.Transport.TCP (createTransport, defaultTCPParameters)
import Control.Distributed.Process.Node (newLocalNode, closeLocalNode, initRemoteTable)
dev :: IO ()
dev = do
Right t <- createTransport "localhost" "9000" defaultTCPParameters
n <- newLocalNode t initRemoteTable
-- do the work
closeLocalNode n -- <- doesn't affect the observed behaviour
closeTransport t