- replace TreeMap with custom ChildrenContainer, which has three
implementations: empty, normal and “terminating” (i.e. waiting for
some child to terminate)
- split recreate() in the same way as terminate(), so that there is a
phase during which the suspended actor waits for termination of all
children which were stopped in preRestart
- do not null out “actor” in ActorCell during restart, because we do
need the supervisionStrategy and nulling it out does not buy us much
in this case anyway
- provide new ActorContext.suspendForChildTermination(), which enters
limbo for as long there are outstanding termination requests; this
enables code which is very similar to previously (half-working) setups
with “synchronous” context.stop(child)
docs are still missing, plus a little polishing here and there; oh, and
before I forget: ActorCell NOW is 64 bytes again ;-)
- this enables using any MessageQueue in BalancingDispatcher,
CallingThreadDispatcher and in general leads to less conflation of
concepts
- add MessageQueue.cleanUp(owner, deadLetterQueue) for the benefit of
durable mailboxes
- change MailboxType.create to take an optional owner and generate only
a MessageQueue, not a Mailbox
- change from messageQueue.numberOfMessages to maintaining an AtomicLong
for performance reasons
- add comments/scaladoc where missing
- remove some assert()s
- fix ResiserSpec to employ buddy-wakeup-threshold
- first, fix quite some data races in RoutedActorRef wrt. the contained
ActorCell’s childrenRef field (which is not even @volatile)
- then notice that there still are double-deregistrations happening in
the dispatcher
- coming finally to the conclusion that the Mailbox should not really
process all system messages in processAllSystemMessages(): we should
really really stop after having closed the mailbox ;-)
- added simple test case which stops self twice to keep this fixed
- it is customary to use class name for categorizing logs, hence we
should support it; class is taken from logSource.getClass
- update SLF4J module to use logClass as category and set logSource in
MDC "akkaSource"
- add docs