No description
Find a file
Roland 5d85ab37e3 implement 'stopping' state of actors
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.
2011-11-13 14:56:41 +01:00
akka-actor/src/main implement 'stopping' state of actors 2011-11-13 14:56:41 +01:00
akka-actor-tests/src implement 'stopping' state of actors 2011-11-13 14:56:41 +01:00
akka-camel/src Rename address to name or path where appropriate 2011-11-10 12:19:07 +01:00
akka-camel-typed/src Rename address to name or path where appropriate 2011-11-10 12:19:07 +01:00
akka-cluster/src Rename address to name or path where appropriate 2011-11-10 12:19:07 +01:00
akka-docs Cleaned up RoutedProps and removed all actorOf methods with RoutedProps. 2011-11-11 19:57:27 +01:00
akka-durable-mailboxes Rename address to name or path where appropriate 2011-11-10 12:19:07 +01:00
akka-kernel/src/main/scala/akka Changed all 'def foo(): Unit = { .. }' to 'def foo() { .. }' 2011-09-27 17:41:02 +02:00
akka-remote/src improve DeadLetter reporting 2011-11-12 10:57:28 +01:00
akka-samples rename akka.AkkaApplication to akka.actor.ActorSystem 2011-11-10 21:00:01 +01:00
akka-sbt-plugin/src/main/scala Fix deprecation warnings in sbt plugin 2011-11-01 11:10:14 +01:00
akka-slf4j/src/main/scala/akka/event/slf4j fix more EventFilter related issues 2011-11-13 12:59:16 +01:00
akka-spring/src Removed trailing whitespace 2011-10-28 15:55:47 +02:00
akka-stm/src silence some more expected messages which appeared only on Jenkins (first try) 2011-11-11 20:56:48 +01:00
akka-testkit/src implement 'stopping' state of actors 2011-11-13 14:56:41 +01:00
akka-tutorials/akka-tutorial-first Cleaned up RoutedProps and removed all actorOf methods with RoutedProps. 2011-11-11 19:57:27 +01:00
config remove ActorRef from Failed/ChildTerminated and make some warnings nicer 2011-11-13 00:19:56 +01:00
project Adding a project definition for akka-amqp (but without code) 2011-11-08 18:56:24 +01:00
scripts first stab at release notes for release 1.2 2011-08-09 22:09:57 +02:00
.gitignore Get remoting working under the remote actor ref provider 2011-10-13 18:08:09 +02:00
.history Implemented HashedWheelTimer as the default scheduling mechanism in Akka. Fixes #1291 2011-11-10 11:32:26 +01:00
LICENSE Updating copyright section to Typesafe Inc. etc 2011-07-14 16:03:08 +02:00
README.textile Changed URI to akka.io 2011-01-05 05:32:59 -08:00

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.