Releases: akkadotnet/akka.net
Akka.NET v1.5.30
1.5.30 October 1st 2024
Akka.NET v1.5.29 introduced an interface change on the IScheduler
that unfortunately caused a lot of other plugins to break due to API compatibility issues. v1.5.30 rolls back that change but still fixes the underlying bug in Akka.Persistence's handling and serialziation of timestamps without any interface changes. v1.5.29 will be deprecated from NuGet.
- DData: Remove Hyperion dependency
- Streams: Fix SelectAsync race condition bug
- Core: Add new IWithTimers API to allow sender override
- Persistence: Fix SnapshotMetadata default timestamp value (DateTimeKind.Utc bug)
- Core: Fix AskTimeoutException message formatting bug
To see the full set of changes in Akka.NET v1.5.30, click here.
3 contributors since release 1.5.28
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
8 | 259 | 104 | Gregorius Soedharmo |
1 | 10 | 10 | Simon Cropp |
1 | 0 | 1 | Aaron Stannard |
1.5.29 October 1st 2024
Note
Deprecated
This version introduced breaking changes that needs to be reverted. Please use 1.5.30 instead.
Akka.NET v1.5.29 is an emergency patch release that addresses a severe bug for persistence users whom also use protobuf serializer.
- DData: Remove Hyperion dependency
- Streams: Fix SelectAsync race condition bug
- Core: Add new IWithTimers API to allow sender override
- Persistence: Fix SnapshotMetadata default timestamp value (DateTimeKind.Utc bug)
- Core: Fix AskTimeoutException message formatting bug
To see the full set of changes in Akka.NET v1.5.29, click here.
3 contributors since release 1.5.28
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
4 | 177 | 14 | Gregorius Soedharmo |
1 | 10 | 10 | Simon Cropp |
1 | 0 | 1 | Aaron Stannard |
Changes:
- 6fd8701 Update RELEASE_NOTES.md for 1.5.30 release (#7355)
- d98d37f Fix SnapshotMetadata.Timestamp bug (#7354)
- e5aebed Revert #7349 and #7352 (#7353)
This list of changes was auto generated.
Akka.NET v1.5.29
1.5.29 October 1st 2024
Akka.NET v1.5.29 is an emergency patch release that addresses a severe bug for persistence users whom also use protobuf serializer.
- DData: Remove Hyperion dependency
- Streams: Fix SelectAsync race condition bug
- Core: Add new IWithTimers API to allow sender override
- Persistence: Fix SnapshotMetadata default timestamp value (DateTimeKind.Utc bug)
- Core: Fix AskTimeoutException message formatting bug
To see the full set of changes in Akka.NET v1.5.29, click here.
3 contributors since release 1.5.28
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
4 | 177 | 14 | Gregorius Soedharmo |
1 | 10 | 10 | Simon Cropp |
1 | 0 | 1 | Aaron Stannard |
Changes:
- f5c4e63 Fix unit tests related to the Persistence DateTime bug (#7352)
- 5db9d86 Update RELEASE_NOTES.md for 1.5.29 release (#7351)
- 42dfbce Fix AskTimeoutException message formatting bug (#7350)
- 33fd92d Fix DateTimeOffset.DateTime UTC bug (#7349)
- c295010 sdk 8.0.402 (#7348)
- 554086c Add IWithTimers API with sender override (#7341)
- 8e2e11d Streams: Fix SelectAsync race condition bug (#7338)
- 6f937b5 Remove Hyperion from DData (#7337)
This list of changes was auto generated.
Akka.NET v1.5.28
1.5.28 September 5th 2024
Akka.NET v1.5.28 is a release with several bug fixes and improvements.
- Singleton: Fix oldest member transition log message
- Core: Make ITimeProvider injectable into consuming classes
- Singleton: Fix ClusterSingletonProxy failed to re-acquire singleton actor
- Persistence: Make DateTime.UtcNow the default SnapshotMetadata timestamp
- Remote.TestKit: Improve diagnostics and code modernization
- Persistence.TestKit: Add new ConnectionInterceptor and improve usability
- Sharding: Disable durable DData if RememberEntity does not use DData storage
- Persistence.Sql.Common: Harden journal and snapshot store initialization
- Streams: Fix missing AlsoTo public API in Flow, SubFlow, and Source
- Streams: Fix StreamRefSerializer NRE bug
- Persistence: Fix SnapshotStore.SaveSnapshot metadata timestamp bug
- Persistence.TCK: Add new optional SnapshotStore save data integrity spec
To see the full set of changes in Akka.NET v1.5.28, click here.
2 contributors since release 1.5.27.1
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
10 | 5318 | 5153 | Aaron Stannard |
8 | 1568 | 158 | Gregorius Soedharmo |
Changes:
- 3df80f2 Update RELEASE_NOTES.md for 1.5.28 release (#7336)
- cfd25ef Persistence.TCK: Add SnapshotStore SaveSnapshot spec (#7335)
- cb11702 Fix SaveSnapshot timestamp metadata (#7334)
- e8beec4 Fix StreamRefSerializer NRE bug (#7333)
- b47b922 Move ClusterClientDiscovery docs to H1 (#7331)
- df33c31 Update RELEASE_NOTES.md for 1.5.28-beta1 release (#7329)
- 4856230 Fix missing AlsoTo public APIs (#7328)
- 2502ea9 Akka.Persistence.Sql.Common: harden
SqlJournal
andSqlSnapshotStore
against initialization failures (#7325) - ae942d0 Don't enable durable DData for RE unless DData is storage engine (#7327) [ #7326 ]
- 19162bd Improve Akka.Persistence.TestKit (#7324)
See More
- 355439e TestKit and Akka.Remote.TestKit: diagnostic improvements and code modernization (#7321)
- 801ce60 rename ".NET 7" build tasks to just ".NET" (#7323)
- d1f481f fixed ClusterClientDiscoverySpec (#7322)
- 5e2bd0e chore: added 2024 headers (#7319)
- 96c6a60 fixed Akka.Persistence.Tck snapshot load specs (#7320)
- d6a8063 Akka.Persistence: Made
DateTime.UtcNow
the default timestamp forSnapshotMetdata
(#7313) - 5e7be3a Fix ClusterSingletonProxy fails to reacquire singleton actor (#7315)
- da3ded3 Akka.Actor: make
ITimeProvider
injectable into consuming classes (#7314) - acc8bd3 Update ClusterClientDiscovery Akka.Hosting documentation (#7310)
- 177a7c9 Akka.Cluster.Tools.Singleton: log the correct oldest member on transition (#7309)
This list of changes was auto generated.
Akka.NET v1.5.28-beta1
1.5.28-beta1 August 23rd 2024
Akka.NET v1.5.28-beta1 is a patch beta release with several bug fixes and improvements.
- Singleton: Fix oldest member transition log message
- Core: Make ITimeProvider injectable into consuming classes
- Singleton: Fix ClusterSingletonProxy failed to re-acquire singleton actor
- Persistence: Make DateTime.UtcNow the default SnapshotMetadata timestamp
- Remote.TestKit: Improve diagnostics and code modernization
- Persistence.TestKit: Add new ConnectionInterceptor and improve usability
- Sharding: Disable durable DData if RememberEntity does not use DData storage
- Persistence.Sql.Common: Harden journal and snapshot store initialization
- Streams: Fix missing AlsoTo public API in Flow, SubFlow, and Source
To see the full set of changes in Akka.NET v1.5.28-beta1, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
10 | 5318 | 5153 | Aaron Stannard |
4 | 1440 | 115 | Gregorius Soedharmo |
Changes:
- df33c31 Update RELEASE_NOTES.md for 1.5.28-beta1 release (#7329)
- 4856230 Fix missing AlsoTo public APIs (#7328)
- 2502ea9 Akka.Persistence.Sql.Common: harden
SqlJournal
andSqlSnapshotStore
against initialization failures (#7325) - ae942d0 Don't enable durable DData for RE unless DData is storage engine (#7327) [ #7326 ]
- 19162bd Improve Akka.Persistence.TestKit (#7324)
- 355439e TestKit and Akka.Remote.TestKit: diagnostic improvements and code modernization (#7321)
- 801ce60 rename ".NET 7" build tasks to just ".NET" (#7323)
- d1f481f fixed ClusterClientDiscoverySpec (#7322)
- 5e2bd0e chore: added 2024 headers (#7319)
- 96c6a60 fixed Akka.Persistence.Tck snapshot load specs (#7320)
See More
- d6a8063 Akka.Persistence: Made
DateTime.UtcNow
the default timestamp forSnapshotMetdata
(#7313) - 5e7be3a Fix ClusterSingletonProxy fails to reacquire singleton actor (#7315)
- da3ded3 Akka.Actor: make
ITimeProvider
injectable into consuming classes (#7314) - acc8bd3 Update ClusterClientDiscovery Akka.Hosting documentation (#7310)
- 177a7c9 Akka.Cluster.Tools.Singleton: log the correct oldest member on transition (#7309)
This list of changes was auto generated.
Akka.NET v1.5.27.1
1.5.27.1 July 25th 2024
Akka.NET v1.5.27.1 is a minor patch to fix a race condition between the logging and remoting system.
To see the full set of changes in Akka.NET v1.5.27.1, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
1 | 4 | 0 | Aaron Stannard |
1 | 10 | 3 | Gregorius Soedharmo |
Changes:
- 55827b7 Update RELEASE_NOTES.md for 1.5.27.1 (#7306)
- 3e2d49c Fix remoting logging DefaultAddress race condition (#7305)
- 3eacb6c Added v1.5.28 placeholder
This list of changes was auto generated.
Akka.NET v1.5.27
1.5.27 July 25th 2024
Akka.NET v1.5.27 is a significant release that includes new features, mission-critical bug fixes, and some performance improvements.
Major Akka.Cluster.Sharding and Akka.Cluster.Tools.Singleton Bug Fixes
In all prior versions of Akka.NET, there are two high impact distributed systems bugs:
- Akka.Cluster.Tools.Singleton: singleton moves earlier than expected - as soon as new node joins
- Akka.Cluster.Sharding: duplicate shards / entities
As we discovered during the course of our pains-taking bug investigation, these were, in fact, the same issue:
- The
ClusterSingletonManager
is supposed to always belong on the oldest node of a given role type, but an original design error from the time Akka.Cluster.Tools was first introduced to Akka.NET meant that nodes were always sorted in descending order ofUpNumber
. This is backwards: nodes should always be sorted in ascending order ofUpNumber
- this means that the oldest possible node is always at the front of the "who is oldest?" list held by theClusterSingletonManager
. This explains why the singleton could appear to move early during deployments and restarts. - The
ClusterSingletonManager
was suspectible to a race condition where if nodes were shutdown and restarted with the same address in under 20 seconds, the default "down removal margin" used by theClusterSingletonManager
to tolerate dirty exits, it would be possible after multiple successive, fast, restarts for multiple instances of the singleton to be alive at the same time (for a short period.)
Both of these varieties of problem, duplicate singletons, is what lead to duplicate shards.
As a result we've made the following fixes:
- Akka.Cluster.Tools: deprecate ClustersSingletonManagerSettings.ConsiderAppVersion -
AppVersion
is no longer considered for singleton placement as it could easily result in split brains. - Akka.Cluster.Tools: fix mutability and oldest state bugs with
ClusterSingletonManager
- resolves the issue with rapid rolling restarts creating duplicates. We've tested this fix in our test lab across thousands of coordinator restarts and haven't been able to reproduce the issue since (we could easily do it before.) - Akka.Cluster.Tools.Singleton / Akka.Cluster.Sharding: fix duplicate shards caused by incorrect
ClusterSingletonManager
HandOver
- we fixed the member age problem here, which could cause a second singleton to start at inappropriate times.
Akka.Discovery and ClusterClient
Discovery Support
In Akka.NET v1.5.27 we've added support for using Akka.Cluster.Tools.ClusterClient alongside with Akka.Discovery plugins to automatically discover the initial contacts you need for ClusterClientReceptionist
instances in your environment.
You can read the documentation for how this works here: https://getakka.net/articles/clustering/cluster-client.html#contact-auto-discovery-using-akkadiscovery
Related PRs and issues:
- Akka.Discovery: Add multi-config support to config-based discovery
- Cluster.Tools: Fix missing VerboseLogging in ClusterClientSettings.Copy method
- Cluster.Tools: Improve ClusterClientDiscovery to avoid thundering herd problem
- Cluster.Tools: Change ClusterClientDiscovery to use the new Akka.Management "/cluster-client/receptionist" endpoint
Other Bug Fixes and Improvements
- Akka.Cluster: improve gossip serialization performance
- Akka.Streams: Fix
ActorMaterializerImpl
null
LogSource
- Akka.Streams:
AlsoTo
may not be failing graph when its sink throws exception - Akka.DistributedData: if
lmdb.dir
is null or empty, log a warning and set to default
To see the full set of changes in Akka.NET v1.5.27, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
15 | 835 | 1001 | Aaron Stannard |
12 | 1123 | 207 | Gregorius Soedharmo |
Changes:
- b34d645 V1.5.27 release notes (#7303)
- 6a81fd3 Akka.Cluster.Tools: deprecate ClustersSingletonManagerSettings.ConsiderAppVersion (#7302)
- 7180810 Akka.Cluster.Tools: fix mutability and oldest state bugs with
ClusterSingletonManager
(#7298) - 6b6afe4 Add AlsoTo downstream failure propagation support (#7301)
- 7811504 Fix ActorMaterializerImpl null LogSource (#7300)
- f2e81c5 Akka.Cluster.Tools.Singleton / Akka.Cluster.Sharding: fix duplicate shards caused by incorrect
ClusterSingletonManager
HandOver
(#7297) [ #6973, #6793, #7196 ] - f4501e8 migrated
ClusterSingletonManager
toswitch
statements (#7296) - 9eb670a
ShardCoordinator
: misc cleanup (#7295) - a6daed7 remove unused
reference.confg
from DistributedData.LightningDb (#7294) - d3b3613 DData: if
lmdb.dir
is null or empty, log a warning and set to default (#7292)
See More
- 50ef7b9 Akka.Cluster: added sanity check for
Member.AgeComparer
(#7291) [ #6973 ] - f7f9078 Akka.Cluster.Sharding: enable
prefer-oldest
by default onReplicator
(#7290) - 4b7cff3 Akka.Cluster.Sharding: added tests for DData consistency settings (#7288)
- 5176dfb Akka.Cluster: improve gossip serialization performance (#7281)
- 9981d83 Fix busted Windows Build stage (#7283)
- 7947c1f Optimize cluster message serializer benchmarks (#7282)
- 7fb0c2b Add
ActorBase
lifecycle flow unit tests (#7128) - 8843a21 Akka.Cluster:
ClusterMessageSerializer
benchmarks (#7280) - 9f5de84 Akka.Cluster: harden ignored gossip messages (#7278)
- 8f200ef Update RELEASE_NOTES.md for 1.5.27-beta2 release (#7277)
- 03a469f Fix ClusterClientDiscovery, missing port name in lookup (#7276)
- 67e7754 Update RELEASE_NOTES.md for 1.5.27-beta1 release (#7275)
- e4e4ca4 Improve ClusterClientDiscovery feature (#7274)
- 7f37465 Fix possible problems with ClusterClient Discovery (#7270)
- dab2a5e Update failure message syntax (#7273)
- 000d8fe Fix missing ClusterClientSettings.VerboseLogging in Copy method (#7272)
- 399c548 Update ConfigServiceDiscovery to support multi-config (#7271)
- 7136919 Added v1.5.27 placeholder
- f797f8d Update RELEASE_NOTES.md for 1.5.26 release (#7268)
This list of changes was auto generated.
Akka.NET v1.5.27-beta2
1.5.27-beta2 July 3rd 2024
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
1 | 1 | 1 | Gregorius Soedharmo |
1.5.27-beta1 July 3rd 2024
Akka.NET v1.5.27-beta1 improves upon the new ClusterClient initial contact auto-discovery feature to make it more robust in implementation.
- Akka.Discovery: Add multi-config support to config-based discovery
- Cluster.Tools: Fix missing VerboseLogging in ClusterClientSettings.Copy method
- Cluster.Tools: Improve ClusterClientDiscovery to avoid thundering herd problem
- Cluster.Tools: Change ClusterClientDiscovery to use the new Akka.Management "/cluster-client/receptionist" endpoint
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
5 | 422 | 183 | Gregorius Soedharmo |
1 | 4 | 0 | Aaron Stannard |
1 | 1 | 1 | Sean Killeen |
Changes:
- 8f200ef Update RELEASE_NOTES.md for 1.5.27-beta2 release (#7277)
- 03a469f Fix ClusterClientDiscovery, missing port name in lookup (#7276)
- 67e7754 Update RELEASE_NOTES.md for 1.5.27-beta1 release (#7275)
- e4e4ca4 Improve ClusterClientDiscovery feature (#7274)
- 7f37465 Fix possible problems with ClusterClient Discovery (#7270)
- dab2a5e Update failure message syntax (#7273)
- 000d8fe Fix missing ClusterClientSettings.VerboseLogging in Copy method (#7272)
- 399c548 Update ConfigServiceDiscovery to support multi-config (#7271)
- 7136919 Added v1.5.27 placeholder
- f797f8d Update RELEASE_NOTES.md for 1.5.26 release (#7268)
This list of changes was auto generated.
Akka.NET v1.5.27-beta1
1.5.27-beta1 July 3rd 2024
Akka.NET v1.5.27-beta1 improves upon the new ClusterClient initial contact auto-discovery feature to make it more robust in implementation.
- Akka.Discovery: Add multi-config support to config-based discovery
- Cluster.Tools: Fix missing VerboseLogging in ClusterClientSettings.Copy method
- Cluster.Tools: Improve ClusterClientDiscovery to avoid thundering herd problem
- Cluster.Tools: Change ClusterClientDiscovery to use the new Akka.Management "/cluster-client/receptionist" endpoint
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
5 | 422 | 183 | Gregorius Soedharmo |
1 | 4 | 0 | Aaron Stannard |
1 | 1 | 1 | Sean Killeen |
Changes:
- 67e7754 Update RELEASE_NOTES.md for 1.5.27-beta1 release (#7275)
- e4e4ca4 Improve ClusterClientDiscovery feature (#7274)
- 7f37465 Fix possible problems with ClusterClient Discovery (#7270)
- dab2a5e Update failure message syntax (#7273)
- 000d8fe Fix missing ClusterClientSettings.VerboseLogging in Copy method (#7272)
- 399c548 Update ConfigServiceDiscovery to support multi-config (#7271)
- 7136919 Added v1.5.27 placeholder
- f797f8d Update RELEASE_NOTES.md for 1.5.26 release (#7268)
This list of changes was auto generated.
Akka.NET v1.5.26
1.5.26 June 27th 2024
Akka.NET v1.5.26 introduces a new Akka.Cluster.Tools feature and a logging improvement.
Preliminary ClusterClient Initial Contact Auto-Discovery Feature
To use this feature, you will need to use Akka.Discovery implementation (Kubernetes or Azure) version 1.5.26-beta1 or higher
This feature allows ClusterClient to use Akka.Discovery to automatically query for cluster client receptionists inside a dynamic environment such as Kubernetes.
The preliminary documentation for this feature can be read here
You can see the full set of changes for Akka.NET v1.5.26 here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
3 | 45 | 11 | Aaron Stannard |
2 | 945 | 15 | Gregorius Soedharmo |
Changes:
- c8fc3d4 Add notes to cluster client bit
- 8d60093 Update RELEASE_NOTES.md for 1.5.26 release
- 1cce480 Update ClusterClient documentation to include the new discovery feature (#7265)
- 0fd7ca0 Improve traceability of
ITimerMsg
(#7262) - 8fd8c62 Add ClusterClient initial contact discovery feature (#7261)
- 299fedf made examples, benchmarks, and internal libraries unpackable (#7263)
- 851a72b Added v1.5.26 placeholder (#7258)
This list of changes was auto generated.
Akka.NET v1.5.25
1.5.25 June 14th 2024
Akka.NET v1.5.25 includes a critical bug fix for logging and some other minor fixes.
Logging Errors Introduced in v1.5.21
Versions [v1.5.21,v1.5.24] are all affected by Akka.Logging: v1.5.21 appears to have truncated log source, timestamps, etc from all log messages - this was a bug introduced when we added the log-filtering feature we shipped in Akka.NET v1.5.21.
This issue has been resolved in v1.5.25 and we've added regression tests to ensure that the log format gets version-checked just like our APIs going forward.
Other fixes:
- Akka.Router: sending a message to a remote actor via
IScheduledTellMsg
results in serialization error - Akka.Discovery: Make Akka.Discovery less coupled with Akka.Management
You can see the full set of changes for Akka.NET v1.5.25 here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
6 | 347 | 44 | Aaron Stannard |
2 | 1197 | 1015 | Gregorius Soedharmo |
Changes:
- 31222aa added v1.5.25 release notes (#7257)
- be4ed4d Akka.Event: restore missing log data (#7256) [ #7255 ]
- 6bcab70 Akka.Router: automatically unpack
IScheduledTellMsg
when being handled through a router (#7249) [ #7247 ] - 487218c Modernize Cluster.Client code (#7251)
- 260aee9 add more appropriate settings for Ask vs. Tell benchmarking in BDN (#7248)
- a14bb84 Fix Akka.Discovery
ServiceDiscovery
instantiation (#7245) - 3bd219e [Benchmarks] Add
Ask
vs.Tell
memory pressure baseline (#7244) - b5a133a RemotePingPong: don't let permission issues crash benchmark (#7241)
- 12619cb Added v1.5.25 (#7240)
This list of changes was auto generated.