We—the Akka committers—are pleased to be able to announce the availability of Akka 2.3.10. This is the tenth maintenance release of the 2.3 branch. This release contains several important improvements:
- change default configuration to disable TCP IO connection abort workaround on windows (see more below)
- fix open-coded spinlock in DirectByteBufferPool, which could result in CPU spikes for some workloads
- remove wrong assertion in remoting, which could lead to ActorSystem termination when restarted remote ActorSystem connects after being quarantined
- fix issue in remoting that allocates new socket for each unsuccessful connection attempt to a quarantined system
- fix issue in remoting to not terminate connections if quarantine id do not match, which could result in that cluster node cannot join after restart
- fix issue in ClusterSharding, when coordinator node gracefully leaves the cluster it could save invalid information about the shard locations
- fix memory leak with watch and ask involved
- fix inconsistent cluster metrics
- fix IllegalStateException in akka.dispatch.BatchingExecutor
- fix issue in clustering to exclude unreachable observations from downed node so that leader can perform its duties independent of downed nodes
- report cause of bind and connect failures
- add support for cluster member joining again after restart without having to down and remove the old member with same hostname and port
The complete list of closed tickets can be found in the 2.3.10 github issues milestone.
About that Windows TCP Workaround
The underlying issue is that without signaling read interest on a connection Windows does not signal connection aborts, which means that in the absence of data traffic an abort may go unnoticed. The workaround (which can still be enabled but defaults to “off” now) always made sure to signal the right interest to reliably get this notification, but in some scenarios this will lead to a selector doing busy spinning—pegging one core to 100%. Since this behavior was reported more often than the missing abort notifications we decided to switch the default setting. If your program uses Akka IO and relies on TCP abort notifications when deployed on Windows you may want to manually enable the workaround.
In a later release we will implement a better workaround that detects connection aborts but avoids the busy spinning selector loop.
Migrating from Older Relases
When migrating an existing project from Akka 2.2.x please have a look at the migration guide.
Additional Release Details
Akka 2.3.10 is released for Scala 2.10.4 and 2.11.5. This release is backwards binary compatible with all previous 2.3.x versions which means that the new JARs are a drop-in replacement for the old one (but not the other way around) as long as your build does not enable the inliner (Scala-only restriction). Always make sure to use at least the latest version required by any of your project’s dependencies.
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” or “akka-actor_2.11”, respectively.
commits added removed 18 888 362 Patrik Nordwall 3 61 21 Roland Kuhn 2 564 28 Endre Sándor Varga 2 2 2 hepin 2 12 4 Sergey Kisel 2 40 12 Konrad Malawski 1 221 72 Björn Antonsson 1 23 24 何品 1 49 37 Viktor Klang 1 6 1 Reid Spencer 1 1 1 Jacob Gulotta 1 13 0 Andrei Pozolotin 1 121 1 Balázs Kossovics 1 42 3 Alejandro Lujan