No description
Calling ActorRef.stop() schedules a Terminate() system message. I changed the effect of this message by splitting the systemInvoke.terminate() method into two parts: - in the old place only cancel receiveTimeout and .stop() all children plus set 'stopping' flag - in handleChildTerminated if children are empty while stopping==true call doTerminate(), which detaches from dispatcher and does all the usual cleanup - if no children were there, this happens directly from terminate() - while 'stopping', process only ChildTerminated() and Terminate(), ignore Terminated() and dump all the rest to app.deadLetterMailbox - to make this less convoluted move AutoReceiveMessage handling from Actor to ActorCell (including become/unbecome), which was all accessing ActorContext anyway - teach TestEventListener that DeadLetters with Terminate()/Terminated() are not that bad There is no retry of the .stop(), yet, but that can easily be added now in each Actor which shuts something down: simply watch the target, if no Terminated() is received retry. It is not 100% reliable, though, if only the ChildTerminated() was lost, because that will not be regenerated by the deadLetterMailbox ... need to think about that one. All tests green on my machine. |
||
|---|---|---|
| akka-actor/src/main | ||
| akka-actor-tests/src | ||
| akka-camel/src | ||
| akka-camel-typed/src | ||
| akka-cluster/src | ||
| akka-docs | ||
| akka-durable-mailboxes | ||
| akka-kernel/src/main/scala/akka | ||
| akka-remote/src | ||
| akka-samples | ||
| akka-sbt-plugin/src/main/scala | ||
| akka-slf4j/src/main/scala/akka/event/slf4j | ||
| akka-spring/src | ||
| akka-stm/src | ||
| akka-testkit/src | ||
| akka-tutorials/akka-tutorial-first | ||
| config | ||
| project | ||
| scripts | ||
| .gitignore | ||
| .history | ||
| LICENSE | ||
| README.textile | ||
h1. Akka We believe that writing correct concurrent, fault-tolerant and scalable applications is too hard. Most of the time it's because we are using the wrong tools and the wrong level of abstraction. Akka is here to change that. Using the Actor Model together with Software Transactional Memory we raise the abstraction level and provide a better platform to build correct concurrent and scalable applications. For fault-tolerance we adopt the "Let it crash":http://letitcrash.com model which have been used with great success in the telecom industry to build applications that self-heal, systems that never stop. Actors also provide the abstraction for transparent distribution and the basis for truly scalable and fault-tolerant applications. Akka is Open Source and available under the Apache 2 License. Learn more at "http://akka.io":http://akka.io.