We—the Akka committers—are pleased to be able to announce the availability of Akka 2.3-M1 (PRE-RELEASE MILESTONE ONE). It is a preview on what is going to become Akka 2.3, so please give us feedback!
The most exciting new feature is Akka Persistence, developed by Martin Krasser in collaboration with the Akka team. It allows stateful actors to persist their internal state so that it can be recovered when an actor is started, restarted by a supervisor or migrated in a cluster. It also allows stateful actors to recover from JVM crashes, for example. The key concept behind Akka Persistence is that instead of storing an actor’s state you persist the changes that are applied to it. These changes are immutable facts that are appended to a journal, which allows for very high transaction rates and efficient replication. Stateful actors are recovered by replaying stored changes, rebuilding the actors’ internal state.
Akka Persistence features in 2.3-M1 include:
- event sourcing and command sourcing
- automated and explicit recovery
- state snapshots to reduce recovery times
- journal and snapshot store plugin APIs
- channels as gateways to other services
- persistent FSMs
Current focus is on API and functionality, to get early user feedback. Performance optimizations will be done in later milestones.
Other notable features in this release are:
Detection of when cluster nodes become reachable again after having been unreachable, allowing the cluster to heal again. This makes the cluster more resilient to transient network failures and long garbage collection pauses.
Automatic removal of cluster nodes after a configured time period of unreachability (replaces the previously immediate “auto-down” feature to allow some time for nodes to come back).
Routers have been cleaned up and enhanced. The routing logic has been extracted to be usable within normal actors as well. Some usability problems have been solved, such as properly rejecting invalid configuration combinations. Routees can be dynamically added and removed by sending special management messages to the router.
Cluster routers with multiple routee paths per node.
Aggregator pattern, contributed by Akara Sucharitakul.
Several scalability improvements of clustering and remoting.
Migrating from Older Releases
When migrating an existing project from Akka 2.2.1 please have a look at our migration guide
The artifacts comprising this release have been published to https://repo1.maven.org/maven2/ and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.10”.
v2.2.1 compared to Akka v2.3-M1:
- 51 tickets closed, see 2.3-M1 milestone in Assembla
- 344 files changed, 50208 insertions(+), 12098 deletions(-)
- … and a total of 24 committers!
commits added removed 60 12357 7901 Patrik Nordwall 23 1642 311 Endre Sándor Varga 15 25194 2817 Björn Antonsson 8 49 30 Roland Kuhn 7 11027 1563 Martin Krasser 5 199 177 Viktor Klang 3 67 12 Johannes Rudolph 3 302 119 Mathias 1 1 1 Luc Perkins 1 49 21 Josh Suereth 1 6 0 Mark "Justin" Waks 1 1 1 Joa Ebert 1 16 11 Taylor Leese 1 1 1 oakwhiz 1 0 5 Nilanjan Raychaudhuri 1 1 1 Francois Armand 1 2 1 Andrey Stepachev 1 1 1 Levi Notik 1 13 0 Michael Pollmeier 1 39 42 Gustav Åkesson 1 114 6 Ian Wormsbecker 1 691 0 Akara Sucharitakul 1 1 1 Jonas Bonér 1 2 2 dave