Releases: akkadotnet/akka.net
Akka.NET v1.3.4 Stable Release
1.3.4 February 1 2018
Maintenance Release for Akka.NET 1.3
Akka.NET v1.3.4 is a minor patch mostly focused on bugfixes.
Updates and Bugfixes
- Akka: Ask interface should be clean
- Akka.Cluster.Sharding: DData replicator is always assigned
- Akka.Cluster: Akka.Cluster Group Routers don't respect role setting when running with allow-local-routees
- Akka.Streams: Implement PartitionHub
- Akka.Remote AkkaPduCodec performance fixes
- Akka.Serialization.Hyperion updated to Hyperion v0.9.8
You can see the full set of changes for Akka.NET v1.3.4 here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
6 | 304 | 209 | Aaron Stannard |
1 | 250 | 220 | Maxim Cherednik |
1 | 1278 | 42 | Marc Piechura |
1 | 1 | 1 | zbynek001 |
1 | 1 | 1 | Vasily Kirichenko |
Akka.NET v1.3.3 Stable Release
1.3.3 January 19 2019
Maintenance Release for Akka.NET 1.3
The largest changes featured in Akka.NET v1.3.3 are the introduction of Splint brain resolvers and WeaklyUp
members in Akka.Cluster.
Akka.Cluster Split Brain Resolvers
Split brain resolvers are specialized IDowningProvider
implementations that give Akka.Cluster users the ability to automatically down Unreachable
cluster nodes in accordance with well-defined partition resolution strategies, namely:
- Static quorums;
- Keep majority;
- Keep oldest; and
- Keep-referee.
You can learn more about why you may want to use these and which strategy is right for you by reading our Splint brain resolver documentation.
Akka.Cluster WeaklyUp
Members
One common problem that occurs in Akka.Cluster is that once a current member of the cluster becomes Unreachable
, the leader of the cluster isn't able to allow any new members of the cluster to join until that Unreachable
member becomes Reachable
again or is removed from the cluster via a Cluster.Down
command.
Beginning in Akka.NET 1.3.3, you can allow nodes to still join and participate in the cluster even while other member nodes are unreachable by opting into the WeaklyUp
status for members. You can do this by setting the following in your HOCON configuration beginning in Akka.NET v1.3.3:
akka.cluster.allow-weakly-up-members = on
This will allow nodes who have joined the cluster when at least one other member was unreachable to become functioning cluster members with a status of WeaklyUp
. If the unreachable members of the cluster are downed or become reachable again, all WeaklyUp
nodes will be upgraded to the usual Up
status for available cluster members.
Akka.Cluster.Sharding and Akka.Cluster.DistributedData Integration
A new experimental feature we've added in Akka.NET v1.3.3 is the ability to fully decouple Akka.Cluster.Sharding from Akka.Persistence and instead run it on top of Akka.Cluster.DistributedData, our library for creating eventually consistent replicated data structures on top of Akka.Cluster.
Beginning in Akka.NET 1.3.3, you can set the following HOCON configuration option to have the ShardingCoordinator
replicate its shard placement state using DData instead of persisting it to storage via Akka.Persistence:
akka.cluster.sharding.state-store-mode = ddata
This setting only affects how Akka.Cluster.Sharding's internal state is managed. If you're using Akka.Persistence with your own entity actors inside Akka.Cluster.Sharding, this change will have no impact on them.
Updates and bugfixes:
- Added
Cluster.JoinAsync
andClutser.JoinSeedNodesAsync
methods - Updated Akka.Serialization.Hyperion to Hyperion v0.9.7 - see Hyperion v0.9.7 release notes here.
- Fixed: A Source.SplitAfter Akka example extra output
- Fixed: Udp.Received give incorrect ByteString when client send several packets at once
- Fixed: TcpOutgoingConnection does not dispose properly - memory leak
- Fixed: Akka.IO & WSAEWOULDBLOCK socket error
- Fixed: Sharding-RegionProxyTerminated fix
- Fixed: Excessive rebalance in LeastShardAllocationStrategy
- Fixed: Persistence - fix double return of recovery permit
- Change: Changed Akka.IO configured buffer-size to 512B
- Change: Added human-friendly error for failed MNTK discovery
You can see the full changeset for Akka.NET 1.3.3 here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
17 | 2094 | 1389 | Marc Piechura |
13 | 5426 | 2827 | Bartosz Sypytkowski |
12 | 444 | 815 | Aaron Stannard |
11 | 346 | 217 | ravengerUA |
3 | 90 | 28 | zbynek001 |
3 | 78 | 84 | Maxim Cherednik |
2 | 445 | 1 | Vasily Kirichenko |
2 | 22 | 11 | Ismael Hamed |
2 | 11 | 9 | Nicola Sanitate |
1 | 9 | 10 | mrrd |
1 | 7 | 2 | Richard Dobson |
1 | 33 | 7 | Ivars Auzins |
1 | 30 | 11 | Will |
1 | 3 | 3 | HaniOB |
1 | 11 | 199 | Jon Galloway |
1 | 1 | 1 | Sam Neirinck |
1 | 1 | 1 | Irvin Dominin |
Akka.NET v1.3.2 Stable Release
Streams
- Implemented Restart Flow/Source/Sink graph stages (#3090)
- Implemented MergePrioritized graph stage (#3110)
- Added Streams IO docs (#3109)
- Updated Streams Error-Handling article (#3086)
- Add MergeHub and BroadcastHub docs (#3108)
- Added timeout parameter to Probe.RequestNext and ManualProbe.ExpectNext (#3122)
Other
- Enabled Optimize=true in all netstandard1.6 assemblies (#3088)
- Fixed Sharding serialization bug (#3087)
- Added InternalApi and ApiMayChange annotations (#3101)
- Fixed Tcp throws ArgumentNullException, when receiving data on Mono (#3092)
- Fixed performance degradation if recovering with big numbers of snaps… (#3138)
- Removed dependency on Akka.Tests.Shared.Internals in Akka.Cluster.Testkit (#3131)
- When the underlying assertion api allows, don't drop user messages (#3142)
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
9 | 137 | 59 | Aaron Stannard |
8 | 2713 | 997 | Alex Valuyskiy |
3 | 486 | 95 | Bartosz Sypytkowski |
3 | 12 | 12 | Sebastien Bacquet |
2 | 33 | 7 | ravengerUA |
2 | 184 | 102 | Arjen Smits |
1 | 71 | 7 | Adam Friedman |
1 | 7 | 4 | Sam Neirinck |
1 | 604 | 481 | zbynek001 |
1 | 6 | 6 | Kenneth Ito |
1 | 42 | 3 | Lukas Rieger |
1 | 40 | 2 | Joshua Benjamin |
1 | 4 | 5 | derrickcrowne |
1 | 3 | 2 | Mikhail Moussikhine |
1 | 20 | 0 | Arturo Sevilla |
1 | 2 | 0 | Paweł Bańka |
1 | 17 | 11 | planerist |
1 | 1 | 4 | lesscode |
You can view the full v1.3.2 change set here.
Akka.NET v1.3.1 Stable Release
Maintenance Release for Akka.NET 1.3
Updates and bugfixes:
- Bugfix: Hyperion NuGet package restore creating duplicate assemblies for the same version inside Akka
- Various documentation fixes and updates
- Bugfix: issue where data sent via UDP when
ByteString
payload had buffers with length more than 1,UdpSender
only wrote the first part of the buffers and dropped the rest. - Bugfix: Akka.IO.Tcp failed to write some outgoing messages.
- Improved support for OSX & Rider
- Bugfix: Akka.Persistence support for
SerializerWithStringManifest
required by Akka.Cluster.Sharding and Akka.Cluster.Tools- Akka.Persistence.Sqlite and Akka.Persistence.SqlServer were unable to support
SerializerWithStringManifest
, so using Akka.Cluster.Sharding with Sql plugins would not work.
- Akka.Persistence.Sqlite and Akka.Persistence.SqlServer were unable to support
- Bugfix: Akka.Streams generic type parameters of the flow returned from current implementation of Bidiflow's JoinMat method were incorrect.
- Bugfix:
PersistenceMessageSerializer
was failing with the wrong exceptoin when a non-supported type was provided.
Akka.Persistence backwards compability warning:
- Akka.Persistence.Sql introduces an additional field to the schema used by Sql-based plugins to allow for the use of
SerializerWithStringManifest
calledserializer_id
. It requires any previous Sql schema to be updated to have this field. Details are included in the Akka.Persistence.Sqlite plugin README.md file. Users of the Akka.Persistence.Sqlite plugin must alter their existing databases to add the fieldserializer_id int (4)
:
ALTER TABLE {your_event_journal_table_name} ADD COLUMN `serializer_id` INTEGER ( 4 )
ALTER TABLE {your_snapshot_table_name} ADD COLUMN `serializer_id` INTEGER ( 4 )
Akka.NET v1.3.0 Stable Release
1.3.0 August 11 2017
Feature Release for Akka.NET
Akka.NET 1.3.0 is a major feature release that introduces the significant changes to Akka.NET and its runtime.
.NET Core and .NET Standard 1.6 Support
This release introduces support for .NET Standard 1.6 for our core libraries and .NET Core 1.1 for the MultiNode Test Runner standalone executable. All packages for Akka.NET are dual-released under both .NET 4.5 and .NET Standard 1.6.
As a side note: Akka.NET on .NET 4.5 is not wire compatible with Akka.NET on .NET Core; this is due to fundamental changes made to the base types in the CLR on .NET Core. It's a common problem facing many different serializers and networking libraries in .NET at the moment. You can use a X-plat serializer we've developed here: #2947 - please comment on that thread if you're considering building hybrid .NET and .NET Core clusters.
Akka.Persistence Released to Market
Akka.Persistence has graduated from beta status to stable modules and its interfaces are now considered to be stable. We'll begin updating all of the Akka.Persistence plugins to stable and to add .NET Standard / .NET 4.5 support to each of them as well following this patch.
DocFx-based Documentation Site
Documentation is now generated using DocFx and compiled from within the Akka.NET project rather than a separate documentation repository.
API Changes
This release does not maintain wire format compatibility with the previous release (v1.2.3) inside Akka.Remote; primarily this is due to having to upgrade from Google Protobuf2 to Protobuf3 in order to add .NET Standard support, but we've also taken the liberty of making other serialization improvements while we're at it. So be advised that during an upgrade from 1.2.* to 1.3.* there will be periods of network disruption between nodes using different versions of the service.
Akka.Remote Performance Improvements
Akka.Remote's throughput has been significantly increased.
See the full set of Akka.NET 1.3.0 fixes here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
78 | 65031 | 95061 | Alex Valuyskiy |
64 | 7109 | 2670 | Marc Piechura |
61 | 2420 | 6703 | Nick Chamberlain |
46 | 2316 | 10066 | Aaron Stannard |
31 | 17284 | 13592 | Bartosz Sypytkowski |
25 | 2527 | 1124 | Gregorius Soedharmo |
21 | 7810 | 1688 | zbynek001 |
11 | 1932 | 2167 | Sean Gilliam |
9 | 946 | 219 | Arjen Smits |
4 | 344 | 6 | Lealand Vettleson |
4 | 1644 | 2210 | Arkatufus |
3 | 32 | 6 | Lukas Rieger |
3 | 153 | 17 | Quartus Dev |
2 | 8 | 11 | Paweł Bańka |
2 | 4866 | 12678 | olegz |
2 | 1148 | 176 | Ismael Hamed |
1 | 62 | 5 | Mikhail Kantarovskiy |
1 | 4 | 2 | tstojecki |
1 | 22 | 2 | Maxim Cherednik |
1 | 1 | 1 | Sean Killeen |
v1.2.3 Stable Release
1.2.3 July 07 2017
Maintenance Release for Akka.NET 1.2
Resolves a bug introduced in Akka.NET 1.2.2 that caused Akka.Remote to not terminate properly under some conditions during ActorSystem.Terminate
.
See the full set of Akka.NET 1.2.3 fixes here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
3 | 46 | 63 | Aaron Stannard |
Akka.NET v1.2.2 Stable Release
1.2.2 June 28 2017
Maintenance Release for Akka.NET 1.2
Finally, fully resolves issues related to Akka.Cluster nodes not being able to cleanly leave or join a cluster after a period of network instability. Also includes some minor fixes for clustered routers and Akka.Persistence.
See the full set of Akka.NET 1.2.2 fixes here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
13 | 589 | 52 | Aaron Stannard |
Akka.NET v1.2.1 Stable Release
1.2.1 June 22 2017
Maintenance Release for Akka.NET 1.2
Resolves issues related to Akka.Cluster nodes not being able to cleanly leave or join a cluster after a period of network instability.
See the full set of Akka.NET 1.2.1 fixes here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
25 | 20712 | 3239 | Alex Valuyskiy |
7 | 1966 | 764 | Nick Chamberlain |
4 | 420 | 345 | Aaron Stannard |
2 | 1943 | 3492 | Sean Gilliam |
2 | 104 | 24 | Jaskula Tomasz |
1 | 6 | 10 | Szer |
1 | 20 | 25 | Lealand Vettleson |
Akka.NET v1.2 Stable Release
1.2.0 April 11 2017
Feature Release for Akka.NET
Akka.NET 1.2 is a major feature release that introduces the following major changes:
Akka.Remote now uses DotNetty for its transport layer
The biggest change for 1.2 is the removal of Helios 2.0 as the default transport and the introduction of DotNetty. The new DotNetty transport is fully backwards compatible with the Helios 1.4 and 2.* transports, so you should be able to upgrade from any Akka.NET 1.* application to 1.2 without any downtime. All of the helios.tcp
HOCON is also supported by the DotNetty transport, so none of that needs to updated for the DotNetty transport to work out of the box.
In addition, the DotNetty transport supports TLS, which can be enabled via the following HOCON:
akka {
loglevel = DEBUG
actor {
provider = Akka.Remote.RemoteActorRefProvider,Akka.Remote
}
remote {
dot-netty.tcp {
port = 0
hostname = 127.0.0.1
enable-ssl = true
log-transport = true
ssl {
suppress-validation = true
certificate {
# valid ssl certificate must be installed on both hosts
path = "<valid certificate path>"
password = "<certificate password>"
# flags is optional: defaults to "default-flag-set" key storage flag
# other available storage flags:
# exportable | machine-key-set | persist-key-set | user-key-set | user-protected
flags = [ "default-flag-set" ]
}
}
}
}
}
You can read more about Akka.Remote's TLS support here.
See the complete DotNetty transport HOCON here.
Akka.Streams and Akka.Cluster.Tools RTMed
Akka.Streams and Akka.Cluster.Tools have graduated from beta status to stable modules and their interfaces are now considered to be stable.
CoordinatedShutdown
One of the major improvements in Akka.NET 1.2 is the addition of the new CoordinatedShutdown
plugin, which is designed to make it easier for nodes that are running Akka.Cluster to automatically exit a cluster gracefully whenever ActorSystem.Terminate
is called or when the process the node is running in attempts to exit. CoordinatedShutdown
is fully extensible and can be used to schedule custom shutdown operations as part of ActorSystem
termination.
You can read more about how to use CoordinatedShutdown
here.
Additional Changes
In addition to the above changes, there have been a large number of performance improvements, bug fixes, and documentation improvements made to Akka.NET in 1.2. Read the full list of changes in Akka.NET 1.2 here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
21 | 5173 | 4585 | Alex Valuyskiy |
16 | 4046 | 1144 | Aaron Stannard |
12 | 8591 | 2984 | Sean Gilliam |
6 | 971 | 1300 | Sergey |
5 | 6787 | 2073 | Bartosz Sypytkowski |
4 | 6461 | 8403 | Arjen Smits |
3 | 71 | 65 | Marc Piechura |
3 | 300 | 24 | Nick Chamberlain |
2 | 79 | 40 | Maxim Salamatko |
2 | 305 | 20 | Ismael Hamed |
1 | 136 | 12 | Sergey Kostrukov |
1 | 1015 | 45 | Lukas Rieger |
1 | 1 | 0 | siudeks |
Akka.NET v1.1.3 Stable Release
1.1.3 January 22 2017
Maintenance release for Akka.NET v1.1
Akka.NET v1.1.3 features some new libraries and an enormous number of bug fixes.
Akka.DistributedData Beta
First, we've introduced an alpha of a new module intended for use with Akka.Cluster: Akka.DistributedData. The goal of this library is to make it possible to concurrently read and write replicated copies of the same entity across different nodes in the cluster using conflict-free replicated data types, often referred to as "CRDTs." These replicas can eventually be merged together in a fully consistent manner and are excellent choices for applications that require a high level of availability and partition tolerance.
The library is still a bit of a work in progress at the moment, but you are free to use it via the following command:
PS> Install-Package Akka.DistributedData -pre
Akka.Serialization.Wire Deprecated; Replaced with Akka.Serialization.Hyperion
Wire recently changed its license to GPLv3, which is a poor fit for a technology like Akka.NET. Therefore, our default serializer beginning in Akka.NET 1.5 will be Hyperion instead. You can see how to set it up here: http://getakka.net/docs/Serialization#how-to-setup-hyperion-as-default-serializer
Other bug fixes, performance improvements, and changes
You can see the full list of changes in Akka.NET 1.1.3 here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
19 | 878 | 228 | Aaron Stannard |
10 | 41654 | 3428 | Sean Gilliam |
5 | 11983 | 4543 | Marc Piechura |
4 | 37 | 33 | Arjen Smits |
4 | 12742 | 300 | Bartosz Sypytkowski |
3 | 144 | 74 | Max |
2 | 99 | 8 | ZigMeowNyan |
2 | 7 | 7 | zbynek001 |
2 | 4 | 2 | Andrey Leskov |
2 | 225 | 767 | Alex Valuyskiy |
2 | 212 | 8 | Gordey Doronin |
1 | 8 | 499 | Sean Farrow |
1 | 5 | 5 | tomanekt |
1 | 4 | 2 | Andrew Young |
1 | 3 | 2 | boriskreminskimoldev |
1 | 28 | 3 | Roman Eisendle |
1 | 24 | 36 | Maxim Salamatko |
1 | 2 | 2 | Jeff |
1 | 190 | 38 | Sergey |
1 | 15 | 9 | voltcode |
1 | 12 | 2 | Alexander Pantyukhin |
1 | 107 | 0 | Mikhail Kantarovskiy |
1 | 101 | 0 | derrickcrowne |