haskell-distributed/distributed-process — pull request #83 by simonmar (2012-12-11 14:41:12+00:00)
Title: Tweak reregister semantics

Jeff's recent changes made it an error to reregister a name if the
name was *not* already registered. This interacts badly with the way
that SimpleLocalNet handles logging:

1. start up a slave
2. start up the master
3. terminate the master
4. start the master again

after restarting the master, logging no longer works on the slave.
This is because in step 3 when the master dies, the slave's
registration for "logger" is erased, and in step 4 the master calls
reregisterRemoteAsync to register "logger", but this fails because
there is no existing registration for "logger" on the slave.

My fix is to change the semantics of reregister to make this work. If
we need reregister with the old semantics, we could add a third
variant instead.