News & Articles

Full archive

February 26


Akka 2.1.1 Released!

Dear hAkkers,

We—the Akka committers—are pleased to be able to announce the availability of Akka 2.1.1. This is the first maintenance release of the 2.1 branch, which besides documentation updates and the fixes mentioned below also contains a back-port of most of the cluster-related changes in the recently released 2.2-M1.

The issues fixed are:

  • release thread pool used by Netty’s ExecutionHandler more timely
  • passive remote connections now work when using secure cookies
  • do not silently swallow exceptions in ForkJoinPool executor anymore
  • fix a bug in HashedWheelTimer which would schedule events incorrectly if delay is multiple of one wheel rotation (thanks Matthew Neeley)
  • fix reporting of error condition when IOManager binds to a port
  • make sure to set Thread.interrupt() flag when catching InterruptedException during tell()
  • Netty does not close the connection anymore upon encountering a non-serializable or too large message
  • PinnedDispatcher does not allow its thread to time out anymore, keeping the actor on the same thread (as opposed to only on its own thread)
  • actually disallow sending null messages (was always forbidden by documentation and only worked on some special ActorRefs)
  • StdoutLogger restores stdout-loglevel during system shutdown
  • do not leak the default dispatcher anymore
  • do not set SO_REUSEADDR for remoting on Windows (which implements this in a buggy way)
  • properly log exceptions without a message in JulEventLogger (thanks Sam Halliday)

The changes in the cluster module are:

  • cluster metric-aware adaptive load balancing routers
  • automatically load cluster extension when used, no need to declare in akka.extensions anymore
  • fire DeathWatch only upon member DOWN, not already at UNREACHABLE
  • allow configuration of minimum number of members before starting the cluster
  • cluster singleton pattern
  • detect failure even when no heartbeat was ever sent

In addition there have been a great number of documentation updates including a whole new section on terminology.

This release is backwards binary compatible with version 2.1.0, which means that the new JARs are a drop-in replacement for the old ones (but not the other way around). Always make sure to use at least the latest version required by any of your project’s dependencies.

Known Issues

Due to the restriction imposed by binary compatibility—which is kept for the patch releases within a minor release such as 2.1.x—not all known issues can be fixed. The currently known issues in the 2.1.x series are:

  • ActorSystem.shutdown() does not terminate all threads if akka.remote.netty.use-dispatcher-for-io is set to true

Migration from Older Versions

When migrating an existing project from Akka 2.0.x please have a look at our migration guide from 2.0 to 2.1

When migrating from the Akka 1.3.x series please follow first the migration guide towards version 2.0.5

About the Cluster Support

The “akka-cluster” module is published under the name “akka-cluster-experimental” to emphasize that its status is not yet final. This denomination is not due to sub-par standard of the module; the cluster support has been tested thoroughly and it works as documented. The reason for the “experimental” tag is that this rather important module is now presented to the general public for the first time, and although we have received valuable feedback from early adopters we anticipate possible API changes in order to meet all of your requirements. Work is continuing on Akka’s cluster support, and we will formally declare it officially supported and stable with the next major release—Akka 2.2 ‘Coltrane’. Please help us make it the best possible solution by continuing to give feedback on the mailing list and telling us what can be improved.


The artifacts comprising this release candidate have been published to 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”.

2.1.1 compared to 2.1.0:

  • 55 tickets closed
  • 604 files changed, 8100 insertions(+), 2626 deletions(–)
  • … and a total of 8 committers!

Fixed Tickets:

  • 2018 – Create tests for the Cluster JMX API
  • 2229 – DOC: Define vocabulary in the introduction documentation pages
  • 2297 – DOC: Describe life-cycle patterns
  • 2306 – Add configuration option defining how many nodes the leader should wait for until moving nodes from JOINING to UP
  • 2509 – DOCS: Discuss guarantees (or guarantee) the validity of ‘sender’ and ‘message’ in preRestart()
  • 2547 – Create cluster metrics-aware Adaptive Load Balancing Routers
  • 2644 – DOC: Improve doc about Defining States of FSM
  • 2664 – MetricCollectorSpec fails on windows machine
  • 2695 – Akka sbt Plugin fails to copy dependency with name != id
  • 2697 – After remote connect
  • 2704 – Load Cluster extension when ClusterActorRefProvider is used
  • 2713 – DOCS: Add page with links to the different Akka books we now have
  • 2737 – DOCS: discuss asynchronous nature of actor logging in more depth
  • 2742 – Remote actors server should not use reuseAddress on Windows
  • 2756 – DOC: Explain why and when to use configuration
  • 2759 – DOC: Remove reference to Dispatcher from DefaultScheduler scaladoc
  • 2761 – DOC: Java sample for durable mailbox
  • 2764 – DOC: Wording about actorFor in Looking up Actors by Concrete Path is confusing/wrong
  • 2765 – DOCS: Check ComposableActor example works in 2.0.x
  • 2775 – DOC: Migration: Promise doesn’t extend Future
  • 2779 – only trigger DeathWatch after a node is DOWN
  • 2785 – 2.1.x Backport #2692 Cluster: membership events should only be published for changes seen by everyone
  • 2793 – NodeMetricSpec possibly too strict?
  • 2800 – prevent null from being sent as a message
  • 2803 – Instant vs Converged Member Events
  • 2804 – NettyRemoteTransport should not close the channel when trying to send non-serializable message
  • 2820 – TransformationSampleJapiSpec failed
  • 2852 – IOManager exception when port is already bound does not tell port number
  • 2854 – Problem with auto-restart of the first seed node
  • 2856 – PinnedDispatcher should use same thread all the time
  • 2863 – zeromq socket needs to be pinned to the thread that created it
  • 2871 – JoinTwoClusters failed
  • 2875 – TransformationSampleJapiSpec failed
  • 2895 – Pattern: Singleton actor instance in cluster
  • 2898 – HashedWheelTimer incorrectly schedules events when delay is a multiple of the wheel period
  • 2907 – Failure detection also when no heartbeats sent
  • 2910 – IOManager connect should handle UnresolvedAddressException
  • 2919 – We get lingering dispatchers in some tests
  • 2921 – Connection refused when secure-cookie is used in 2.1.0
  • 2933 – Error starting ClusterReadView when shutting down
  • 2963 – make sure to set Thread.interrupt() when catching InterruptException in tell()
  • 2965 – describe how to shut off all stdout logging from Akka
  • 2974 – ForkJoinPool.execute(Runnable) failures are swallowed
  • 2975 – Backport cluster features and improvement to 2.1.1
  • 2984 – Documentation Getting Started guide sbt libraryDependencies setting should show non-sbt 0.12.x information as well
  • 2995 – ClusterDeathWatch failed
  • 3017 – Missing LeaderChanged - detected by ClusterSingletonManagerSpec
  • 3030 – Make cluster fault handling more robust
  • 3031 – IllegalArgumentException: Nodes not part of cluster have marked the Gossip as seen
  • 3038 – Silently dropped big messages
  • 3041 – ClusterDomainEventPublisherSpec failed
  • 3053 – Copyright 2009-2013
  • 3066 – Verify BC
  • 3069 – LoggerSpec failed
  • 3086 – Allow null log message in JulEventHandler


commits added removed
   45    7704    3409 Patrik Nordwall
   13     257     190 Roland Kuhn
   11     332     119 Björn Antonsson
    3      93      29 Rich Dougherty
    3      57      18 Viktor Klang
    2      76      28 Endre Sándor Varga
    1      38      24 Matthew Neeley
    1       1       1 Sam Halliday

Happy hAkking!