Akka.net v1.5.68 Release Notes
Release Date: 2026-05-17 // about 1 month ago-
1.5.68 May 17th, 2026
๐ Akka.NET v1.5.68 is a maintenance release with bug fixes for Akka.IO TCP connection handling, Akka.Streams stream materialized task faults, and Akka.TestKit xUnit 3 parallel context management.
๐ Akka.IO Bug Fixes
- โฑ Fix: report
Tcp.CommandFailedwhen a scheduled connect retry throws - Fixes #8195: On Linux, a dropped TCP connection could permanently stall the user actor โ it never receivedTcp.ConnectedorTcp.CommandFailedbecause aPlatformNotSupportedExceptionthrown during a scheduled connect retry was swallowed by theHashedWheelTimerScheduler. The retry is now scheduled as aRetryConnectself-message viaIWithTimers, ensuring any exception is surfaced to the commander asTcp.CommandFailedand the connection actor stops cleanly. The pending timer is also canceled automatically when the actor stops, removing a latent use-after-dispose bug.
๐ Akka.Streams Bug Fixes
- ๐ Fix: observe discarded stream task faults - Fixes #8209 and #8210:
IgnoreSink,QueueSource, andLazySinknow observe their internal materializedTaskfaults, preventing them from surfacing later asUnobservedTaskExceptionevents on the thread pool.
โ Akka.TestKit Bug Fixes
- โฑ Fix: wrap outer
SynchronizationContextinActorCellKeepingSynchronizationContext-ActorCellKeepingSynchronizationContextnow accepts an optional innerSynchronizationContextand delegates scheduling to it while wrapping callbacks with the cell-pinning window. This prevents test hangs in downstream consumers such asAkka.Hosting.TestKitwhose asyncIHostlifecycle depends on xUnit v3'sMaxConcurrencySyncContextscheduling.
๐ 1 contributor since release 1.5.67
COMMITS LOC+ LOC- AUTHOR 3 476 119 Aaron Stannard ๐ To see the full set of changes in Akka.NET v1.5.68, click here.
๐ Changes:
- ๐ 9a00eff Update RELEASE_NOTES.md for 1.5.68 release (#8216)
- โฑ e5afb74 fix: report Tcp.CommandFailed when a scheduled connect retry throws (#8195) (#8214)
- 2ab48f5 fix: observe discarded stream task faults (#8212)
- ๐ e608054 fix: wrap outer SynchronizationContext in ActorCellKeepingSynchronizationContext (#8182) [akkadotnet/Akka.Hosting#735, akkadotnet/Akka.Hosting#733 ]
๐ This list of changes was auto generated.
- โฑ Fix: report
Previous changes from v1.5.67
-
1.5.67 April 25th, 2026
๐ Akka.NET v1.5.67 is a hotfix release that reverts a breaking change to the persistence plugin contract introduced in v1.5.66.
โช Akka.Persistence: Revert async
WriteMessagesAsync/SaveAsyncdispatch (#8163)๐ v1.5.66 added
Task.Yield()insideAsyncWriteJournal.ExecuteBatchandSnapshotStoreto move persistence pluginWriteMessagesAsync/SaveAsynccalls off the actor thread. While this improved throughput in benchmarks, it silently broke the implicit contract that persistence plugins rely on โ that the synchronous preamble of these methods executes in actor context.๐ This caused failures in plugins that:
- ๐ Access
SelfinsideWriteMessagesAsync(e.g. Akka.Persistence.Sql, Akka.Persistence.EventStore) โ throwsNotSupportedExceptionoff the actor thread - ๐ Use non-thread-safe collections for write tracking (e.g.
Dictionary<string, Task>) โ concurrent access from actor thread and thread pool causesInvalidOperationException - Send messages to subscribers after writes complete (e.g. Akka.Persistence.Redis) โ accesses shared actor state off-thread
๐ This release removes the
Task.Yield()calls and restores the original dispatch behavior. A future version may reintroduce this optimization with a more targeted approach that preserves the plugin threading contract.If you are on v1.5.66 , upgrade to v1.5.67 immediately if you use any third-party persistence plugin.
COMMITS LOC+ LOC- AUTHOR 1 3 17 Aaron Stannard ๐ Changes:
- ๐ 2f057e4 Update RELEASE_NOTES.md for 1.5.67 release
- โช 46371dd revert(persistence): remove Task.Yield() from AsyncWriteJournal and SnapshotStore (#8163)
๐ This list of changes was auto generated.
- ๐ Access