1.5.9 July 18th 2023
Akka.NET v1.5.9 is a maintenance release that introduces some performance improvements and internal code cleanup/modernization.
Changes:
Improvements:
- Memory optimization, use
Array.Empty
instead of creating empty arrays - Remoting: Log all wrapped message layers during errors
- Port #6805 and #6807, Improve Stream and Pattern.Backoff instance creation time performance
- DData: Harden LWWDictionary serialization null check
Code modernization:
Update dependency versions:
- Bump Google.Protobuf to 3.23.4
- Bump Akka.MultiNode.TestAdapter to 1.5.8
- Bump Microsoft.Data.SQLite to 7.0.9
- Bump Microsoft.Extensions.ObjectPool to 7.0.8
- Bump Xunit to 2.5.0
Akka.TestKit.Xunit Changes
Due to breaking API change in Xunit 2.5.0, updating to Akka.NET 1.5.9 might break your unit tests. Some of the breaking change that we've noticed are:
AkkaEqualException
constructor has been changed due to changes in Xunit API. If you're using this class, please use theAkkaEqualException.ForMismatchedValues()
static method instead of using the constructor.- Testing for exception types by calling async code inside a sync delegate will not unwrap the
AggregateException
thrown. Either use async all the way or manually unwrap the exception. - Xunit
Asset.Equal()
does not automatically check for collection item equality anymore, that means doingAssert.Equal()
between two dictionary or list would not work anymore. - Some Xunit classes have been changed from public to private. If you're using these classes, you will need to refactor your code.
- FsCheck.Xunit: Xunit Roslyn analyzer has become a bit too overzealous and insists that all unit test method can only return either void or Task and will raise a compilation error if you tried to return anything else. If you're using
FsCheck.Xunit
, you will need to use a pragma to disable this check:#pragma warning disable xUnit1028
.
If you want to see the full set of changes made in Akka.NET v1.5.9, click here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
12 | 171 | 155 | dependabot[bot] |
7 | 466 | 165 | Aaron Stannard |
4 | 1648 | 1725 | Simon Cropp |
1 | 9 | 4 | Gregorius Soedharmo |
1 | 7 | 1 | Michael Buck |
Changes:
- fe9c570 Update RELEASE_NOTES.md for 1.4.9 release (#6840)
- 8580932 made transport adapter components public (#6838)
- 54f4967 Bump XunitVersion from 2.4.2 to 2.5.0 (#6825)
- 15635b5 Harden LWWDictionary serialization null check (#6837)
- 309a495 Bump BenchmarkDotNet from 0.13.2 to 0.13.6 (#6834)
- 020b29c Bump Microsoft.Data.SQLite from 7.0.8 to 7.0.9 (#6835)
- c72855b added req/s reporting for macro-benchmarks (#6829)
- a66295b Bump Google.Protobuf from 3.23.3 to 3.23.4 (#6826)
- 68e0d78 cleaned up ChatClient / ChatServer sample (#6824)
- 608d9e8 Bump FsCheckVersion from 2.16.5 to 2.16.6 (#6823)
See More
- 4d8515d Bump Microsoft.Extensions.ObjectPool from 7.0.5 to 7.0.8 (#6813)
- 52cf479 Added spec to demonstrate failed snapshot-only recovery (#6822)
- 17a9c77 Backport Akka.NET v1.4.51 performance fixes (#6821) [ #6805, #6807 ]
- 819af0f Minor documentation additions. (#6820)
- f43b9b7 Akka.Remote: log all layers of wrapped messages during errors (#6818)
- 613878b Bump Microsoft.NET.Test.Sdk from 17.6.2 to 17.6.3 (#6817)
- b5ac7ef use some compound statements (#6814)
- abae81c Bump Microsoft.Data.SQLite from 7.0.7 to 7.0.8 (#6815)
- 54eed54 use target typed new when type is obvious (#6798)
- 647815d Bump Verify.Xunit from 20.3.2 to 20.4.0 (#6810)
- 731ec92 use Array.Empty (#6801)
- 4e97b5a Bump Akka.MultiNode.TestAdapter from 1.5.6 to 1.5.8 (#6802)
- 6d433e0 remove redundant DefineConstants (#6797)
- 2464c7e Bump Microsoft.Extensions.Hosting.WindowsServices from 7.0.0 to 7.0.1 (#6792)
- e93baea Bump Google.Protobuf from 3.23.2 to 3.23.3 (#6794)
- 2368b0c Placeholder for nightlies (v1.5.8)
- b6d1ce3 added v1.5.8 release notes (#6795)
- 5fa8ef4 Added Source/Flow Setup operator (#6788)
- 74c59c5 Bump Microsoft.NET.Test.Sdk from 17.6.0 to 17.6.2 (#6785)
- 6de2171 Bump Verify.Xunit from 20.3.0 to 20.3.2 (#6786)
- 4e23091 Bump Microsoft.Data.SQLite from 7.0.5 to 7.0.7 (#6791)
- 2b9c059 Bump NUnit3TestAdapter from 4.4.2 to 4.5.0 (#6779)
- 2873951 docs: fix wrong link syntax in docs/articles/configuration/config.md (#6782)
- e014825 remove some state machine (#6787)
- c3e03a8 Bump Google.Protobuf from 3.23.1 to 3.23.2 (#6777)
- 0efdc87 Bump Verify.Xunit from 20.1.1 to 20.3.0 (#6776)
- c0dc716 Add Cluster.Sharding DData backward compatibility wire format mode (#6775)
- 8d550bf Bump Verify.Xunit from 20.0.0 to 20.1.1 (#6774)
- 0a3d386 Bump Verify.Xunit from 19.14.1 to 20.0.0 (#6771)
- a65b8e8 Bump Google.Protobuf from 3.23.0 to 3.23.1 (#6772)
- ebcc6d2 [Docs] embed "Reliable Akka.NET Message Delivery with Akka.Delivery" video into docs (#6770)
- 1145bc0 Fix MNTR crashing because it is using PolyFill extension method (#6768) [ #6763 ]
- 17e8028 1.5.8 placeholder
- 455d05b use MinBy and MaxBy (#6742)
- c11e5c6 added v1.5.7 release notes (#6767)
- d7304f4 Revert "Make
HandleActorTaskSchedulerMessage
methodprotected virtual
(#6763)" (#6766) - c514fd1 discard some parameters (#6751)
- 88be1fc [CS0618]
GraphInterpreterSpecKit
(#6697) - 1345e58 Make
HandleActorTaskSchedulerMessage
methodprotected virtual
(#6763) - 3e1b8e5 [Docs] Akka.Delivery Documentation (#6757)
- a8aeadf Upgrade Akka.MultiNodeTestRunner to 1.5.6 (#6764)
- 49bc347 Bump Microsoft.NET.Test.Sdk from 17.5.0 to 17.6.0 (#6762)
- a3eb0dd Update documentation-guidelines.md
- fe2405d [CS0618][Obsolete] Perserve
CreateProducer
(#6673) - 300780c Bump Polyfill from 1.22.0 to 1.23.0 (#6739)
- d7da8dd Revert DocFX changes (#6738, #6756) (#6759)
- 37cb4c6 [FIX][pre][code] CSS problem (#6756)
- 952d0ff harden ReliableDeliveryShardingSpecs (#6750)
- bf9c1ce Fix:
ProducerControllerImpl
now respects bounds when chunking large messages (#6755) [ #6754 ] - b68ba56 fix some xunit warnings (#6752)
- 4f27bac remove redundant casts via AsInstanceOf (#6744)
- d783933 Fix
ByteString.Copy
when requested length is zero (#6749) [ #6748 ] - 15ab3b1 [fixes] API Tests (#6746)
- 7dbfc94 harden ReliableDeliveryShardingSpecs (#6747)
- c0e4512 Bump Google.Protobuf from 3.22.4 to 3.23.0 (#6745)
- 8d3681d [CS0618]
RepointableActorRef
Warning Disable (#6684) - 66f348a [Doc] Upgrade to
Docfx 2.67.0
(#6738) - 95b6227 remove some redundant type parameters (#6713)
- f7a5977 Update RELEASE_NOTES.md (#6741)
- 96cd8db feature: Akka.Delivery - reliable point-to-point delivery + message chunking (#6720)
- 899e62f Update RELEASE_NOTES.md for 1.5.6 release (#6740)
- c402cc7 Update tutorial-3.md (#6737)
- 8ad8d7c Update tutorial-2.md (#6736)
- 8f13c74 remove GetTypeInfo usage (#6727)
- 30fbb2d Change LogEvent time format from 12 to 24 hours (#6734)
- 5c29078 remove TaskExtensions (#6732)
- bf7be78 Update build.fsx
- c48617e build system: increase
dotnet test --blame-hang-timeout
to 2m (#6735) - bc0973c Bump Google.Protobuf from 3.22.3 to 3.22.4 (#6733)
- 89ecc27 Bump Polyfill from 1.21.0 to 1.22.0 (#6731)
- 5782949 Fix of duplication info message for unhandled message (#6532). (#6730)
- 8a26155 Update RELEASE_NOTES.md for v1.5.5 release (#6728)
- f1eba91 [CS0420]
ActorCell
Warning Disable (#6683) - 4b19cd1 [CS0618]
GraphDslCompileSpec
- Warning Disable (#6680) - 502370e [CS0612]
QueryEventsSql
Warning Disable (#6702) - b7ec446 use Directory.Build.props convention (#6724)
- 7d5fb2b use some pattern matching (#6715)
- c2559ff Fix FastLazy race condition and waiting thread hanging (#6336) (#6707)
- 541ffc9 Fix ReceiveAsync resetting ReceiveTimeout (#6718)
- 95000a6 use Polyfill (#6693)
- cb9362a remove an empty finally (#6716)
- be59e3a inline some out variables (#6712)
- 53333bb simplify TryGetByName (#6711)
- 90d6349 [CS0618] AbstractStage Warning Disable (#6672)
- 29b1513 remove some casts (#6710)
- 24dec7f [CS0618]
Serializer
Warning Disable (#6703) - a1a371d added real bounds checking to
ByteString.Slice
(#6709) - 9676cc1 remove redundant DefineConstants RELEASE (#6695)
- 48a6054 Bump Verify.Xunit from 19.14.0 to 19.14.1 (#6706)
- d2a4db3 Bump Verify.Xunit from 19.13.1 to 19.14.0 (#6701)
- d04a23c [CS0414]
AsyncWriteJournal
:_continuationOptions
value is never used (#6698) - faaf9b2 [CS1998]
ClusterHeartbeatReceiverSpec
This async method lacksawait
operators (#6699) - dcdf45f remove duplicate copyrights (#6696)
- 7533c92 [CS0168]
ShardRegion
(#6700) - 0bf9082 Bump Google.Protobuf from 3.22.1 to 3.22.3 (#6648)
- 0f3b42d Bump Verify.Xunit from 19.13.0 to 19.13.1 (#6692)
- 468f167 [CS0618]
StreamRefsSpec
Sink.ActorRef<TIn>(IActorRef, object)
is obsolete (#6691) - 79425f6 [CS0618]
ActorRefSinkSpec
Sink.ActorRef<TIn>(IActorRef, object)
is obsolete (#6690) - 331dc1b [Fix][CS0168]
RemoteDeploymentDeathWatchSpec
- The variable 'ex' never used (#6681) - 9b532ac [CS0660][CS0661]
TestActorRef
Warning Disable (#6686) - f55da53 [CS0618][Stage] Warning Disable (#6676)
- 4b8924d Bump back to
FSharp.Core
6.0.5
(#6688) - 54259a3 [Fix][CS0169]
RemoteReDeploymentSpec
- The field_identify
is never used (#6682) - 0c1120e [DependencyInjection] Stashing actor spec (#6689)
- 7e1cc7b [Issue #6667] New methods and tests to enable "ExpectAll" with Predicates (#6668)
- 1f029df [fix][DependencyResolverSetup] Ambiguous reference in cref attribute (#6678)
- b688e5c Update RELEASE_NOTES.md for 1.5.4 release (#6677)
- 342ea04 [15-74]
FlowInitialDelaySpec
(#6671) - b63df56 [CS0618][IWithboundedStash]Warning disable (#6669)
- 6ea39d3 [19-74]
FlowKillSwitchSpec
(#6563) - f3dddac [14-74]
FlowIdleInjectSpec
(#6558) - 272ea2d [13-74]
FlowGroupedWithinSpec
(#6557) - 1877a0e Akka.Actor: bounded
IStash
programmatic configuration (#6661) [ #6658 ] - f79c26d disable Akka.Streams.Tests.Dsl.HubSpec.MergeHub_must_work_with_long_streams_when_buffer_size_is_1 (#6665)
- fd4860b EventStream deadLetters doc has been improved (#6662) [ #5334 ]
- 7c2ace9 Bump Verify.DiffPlex from 2.2.0 to 2.2.1 (#6663)
- 11420a6 Bump Verify.Xunit from 19.12.3 to 19.13.0 (#6664)
- b3e27a9 [12-74]
FlowFromTaskSpec
(#6556) - 58435a0 [11-74]
FlowForeachSpec
(#6555) - 4642f56 [10-74]
FlowDetacherSpec
(#6554) - 8b6c0ff Akka.Actor:
IStash
API and configuration enhancements (#6660) [ #6658 ] - 61fb874 Fix
IsolationLevel
bugs (#6659) - 2fe0143 Added v1.5.4 placeholder for nightlies
- 26f52a9 Update RELEASE_NOTES.md for 1.5.3 release (#6656)
- 4537b1c Add SQL query isolation level (#6654)
- f48394e [9-74]
FlowConcatSpec
(#6553) - 5164c8d Bump Microsoft.Extensions.ObjectPool from 7.0.4 to 7.0.5 (#6644)
- 37903d2 Fix Hyperion setting setup code (#6655)
- 2aa497a Bump Verify.Xunit from 19.12.1 to 19.12.3 (#6652)
- 3b76b12 updated all file headers to 2023 (#6649)
- 3828b70 [20-74]
FlowMergeSpec
(#6567) - 220cffb [21-74]
FlowOnCompleteSpec
(#6569) - c1cbb7f [22-74]
FlowPrefixAndTailSpec
(#6570) - 1a8d495 [24-74]
FlowRecoverWithSpec
(#6572) - addb9fb [17-74]
FlowIteratorSpec
(#6561) - c083fcd [23-74]
FlowRecoverSpec
(#6571) - b1f6e2d [Obsolete] warning disable CS0618 (#6646)
- fdeedb8 Bump Microsoft.Data.SQLite from 7.0.4 to 7.0.5 (#6643)
- beaf727
Akka.FSharp.*fsproj
: warning NU1504: Duplicate 'PackageReference' items found (#6641) - ad49624 WARNING CS0105 (#6645)
- ff52eff [26-74]
FlowSelectAsyncSpec
(#6573) - 3c02d9e [27-74]
FlowSelectAsyncUnorderedSpec
(#6574) - 2dd7d26 [31-74]
FlowSplitAfterSpec
(#6578) - f13062e Bump for 1.5.3 nightlies
- 1ebbb4d [37-74]
FlowWatchTerminationSpec
(#6584) - 2042810 [28-74]
FlowSelectErrorSpec
(#6575) - 6234c39 [29-74]
FlowSkipWhileSpec
(#6576) - 89dc26d Bump Verify.Xunit from 19.12.0 to 19.12.1 (#6637)
- db52ac3 Lock persistence journal table on write (#6639)
- e4ac8fd [33-74]
FlowSumSpec
(#6580) - 7e3befa [32-74]
FlowSplitWhenSpec
(#6579) - fd322e9 [30-74]
FlowSlidingSpec
(#6577) - 0d6ec15 [2-74]
ActorRefSourceSpec
(#6552) - 146929f [38-74]
FlowWhereSpec
(#6585) - 607de41 [47-74]
GraphUnzipSpec
(#6594) - b218c7f Fix in
CS4014
(#6633) - 4ffa22a Fix README to include links to Akka.Hosting and Akka.Templates (#6636)
- 3fdae60 Update RELEASE_NOTES.md for v1.5.2 release (#6635)
- e53c7b0 Akka.Cluster: enable
keep-majority
default SBR (#6628) - b3cd8b7 [35-74]
FlowTakeWithinSpec
(#6582) - f57bab7 [34-74]
FlowTakeWhileSpec
(#6581) - f798e2e [36-74]
FlowThrottleSpec
(#6583) - a11f191 [40-74]
FlowZipSpec
(#6587) - bca2ce2 Bump Verify.Xunit from 19.11.2 to 19.12.0 (#6630)
- 2534f52 [39-74]
FlowWireTapSpec
(#6586) - 02d2ec2 [41-74]
GraphBalanceSpec
(#6588) - 81a710a [42-74]
GraphBroadcastSpec
(#6589) - 48c8077 [43-74]
GraphConcatSpec
(#6590) - 6220253 [45-74]
GraphPartitionSpec
(#6592) - e052a78 use correct capacity when creating DynamicQueue when FixedQueue is full (#6632)
- d925fd5 [44-74]
GraphMergeSpec
(#6591) - 5d68c3a [46-74]
GraphStageTimersSpec
(#6593) - f2737fe [48-74]
GraphUnzipWithSpec
(#6595) - bdc526b [49-74]
GraphWireTapSpec
(#6596) - fb7bd28 [50-74]
GraphZipSpec
(#6597) - a58cab8 [51-74]
GraphZipWithSpec
(#6598) - 0ae9228 [52-74]
HeadSinkSpec
(#6599) - 4e6817d [53-74]
LazyFlowSpec
(#6600) - 95c1266 [54-74]
LazySinkSpec
(#6601) - 2f402be [55-74]
LazySourceSpec
(#6602) - 707c370 [57-74]
NeverSourceSpec
(#6605) - 8fbd281 [58-74]
ObservableSinkSpec
(#6606) - 5dab14b [60-74]
PublisherSinkSpec
(#6608) - 5636752 [61-74]
QueueSinkSpec
(#6609) - 5159b71 [62-74]
QueueSourceSpec
(#6610) - e18567a [63-74]
SinkForeachParallelSpec
(#6611) - 9135b85 [WARNING] CS0628:
new protected member declared in sealed type
(#6626) - 0b8cc60 [67-74]
UnfoldResourceSourceSpec
(#6615) - a4dcfe1 [59-74]
ObservableSourceSpec
(#6607) - b78ce49 [56-74]
MaybeSourceSpec
(#6604) - 2e1a137 [65-74]
SubscriberSinkSpec
(#6613) - 725f44b [66-74]
SubstreamSubscriptionTimeoutSpec
(#6614) - d156ff4 Alternative implementation of
AtomicState
leveraging WaitAsync (#6109) - 7472bd5 [69-74]
KeepGoingStageSpec
(#6617) - 40fdc1b [70-74]
GraphStageLogicSpec
(#6618) - 154d842 [68-74]
ActorGraphInterpreterSpec
(#6616) - 485a7c4 [71-74]
FileSinkSpec
(#6619) - af943a9 [72-74]
FileSourceSpec
(#6620) - 8d72fe4 Increase timeout size on
MergeHub_must_work_with_long_streams_when_buffer_size_is_1
- e89f427 Fixed build status in
README.md
file (#6625) - 5e2b211 [64-74]
SourceSpec
(#6612) - fab1288 [74-74]
InputStreamSourceSpec
(#6622) - 3a75d0c [73-74]
InputStreamSinkSpec
(#6621) - 5da08f7 [Obsolete]
RunScript
(#6623) [ #6566 ] - 0a8e843 fix MergeHub_must_work_with_long_streams_when_buffer_size_is_1 (#6564)
- d1299d0 Akka.Streams: fix race conditions with synchronous file sink specs (#6565)
- 091b817 [Obsolete] GetFirstAttribute (#6624)
- 7f080e9 skip racy
TickSourceSpec
(#6566) - 8729c00 [16-74]
FlowInterleaveSpec
(#6560) - 23245ae [18-74]
FlowJoinSpec
(#6562) - 947e1ed
ForEachAsync
optimization, added missingSinkForeachAsyncSpec
(#6538) - 1a03706 Cluster heartbeat creation_time to TimeSpan fix. (#6551)
- c20e28f [8-74]
FlowConcatAllSpec
(#6549) - b07771a log send time in verbose heartbeat messages #6496. (#6548)
- 0f701e9 [6-74]
FlowAskSpec
(#6545) - 6784296 [4-74]
FlowAggregateAsyncSpec
: ChangeAssertAllStagesStopped
toAssertAllStagesStoppedAsync
(#6543) - 996cac7 remove the
Obsolete
attribute (#6547) - f5924ea [5-74]FlowAggregateSpec (#6544)
- 29b56ab [3-74]
BidiFlowSpec
: ChangeAssertAllStagesStopped
toAssertAllStagesStoppedAsync
(#6542) - 29da910 Change
AssertAllStagesStopped
toAssertAllStagesStoppedAsync
-ActorRefBackpressureSinkSpec
! (#6539) - 6351bd9 [7-74]
FlowBufferSpec
(#6546) - fd41c70 Bump Verify.Xunit from 19.11.1 to 19.11.2 (#6535)
- dc232c6 Cs1711 xml typeparam (#6531)
- f30eb07 remove
EnumeratorInterpreter
fromAkka.Streams.Implementation.Fusing
(#6533) - 060cf9c Bump Microsoft.Extensions.ObjectPool from 7.0.3 to 7.0.4 (#6517)
- a1d663f [Obsolete][CS0618]
AwaitResult
>Use ShouldCompleteWithin instead
(#6498) - 7ca22af Fix broken object type serializer in QueryExecutor (#6528)
- f7c30f7 remove unused _pruningPerformed and _tombstonedNodes (#6526)
- 49c0703 Drop support for
.NETCore3.1
in Tests and samples (#6529) - 3d7c0e1 [obsolete]
ExpectNext(params T[] elems)
(#6505) - 9707dbe Remove secure cookie (#6515)
- 88c59ca Update RELEASE_NOTES.md
- 9ab977c Update RELEASE_NOTES.md for 1.5.1 release (#6524)
- 64c6eff Fix
StackOverflow
exception whenNewtonsoftJsonSerializer
tries to deserialize aJObject
inside anobject
field (#6503) [ #6502 ] - 3fbb7a2 Bump Verify.Xunit from 19.11.0 to 19.11.1 (#6514)
- c7c75d8 Bump Microsoft.Data.SQLite from 7.0.3 to 7.0.4 (#6516)
- e55a5a5 [CS1998] This async method lacks 'await' operators and will run synchronously (#6513)
- 76baf9d [CS0162] Unreachable codes detected (#6509)
- 535072c [CS4014] warning disable - Because this call is not awaited (#6512)
- 01345f6 [Ambiguous][CS0419] references (#6510)
This list of changes was auto generated.