Skip to content

Akka.NET v1.4.21

Compare
Choose a tag to compare
@Aaronontheweb Aaronontheweb released this 16 Jun 13:37
a8347c5

1.4.21 June 16 2021

Maintenance Release for Akka.NET 1.4

Akka.NET v1.4.21 is a significant release that includes major performance improvements, bug fixes, and a major update to the Akka.DependencyInjection NuGet package.

Performance Improvements
Akka.NET v1.4.21 includes some major performance fixes and improvements:

Our observed performance numbers for Akka.Remote show a significant increase in performance for v1.4.21 over v1.4.20:

Before

PS> dotnet run -c Release --framework netcoreapp3.1      
OSVersion:                         Microsoft Windows NT 6.2.9200.0
ProcessorCount:                    16
ClockSpeed:                        0 MHZ
Actor Count:                       32
Messages sent/received per client: 200000  (2e5)
Is Server GC:                      True
Thread count:                      109

Num clients, Total [msg], Msgs/sec, Total [ms]
         1,  200000,    113379,    1764.56
         5, 1000000,    186429,    5364.05
        10, 2000000,    185340,   10791.11
        15, 3000000,    183218,   16374.06
        20, 4000000,    179824,   22244.63
        25, 5000000,    182716,   27365.89
        30, 6000000,    182039,   32960.61

After

PS> dotnet run -c Release --framework netcoreapp3.1                
OSVersion:                         Microsoft Windows NT 6.2.9200.0 
ProcessorCount:                    16                              
ClockSpeed:                        0 MHZ                           
Actor Count:                       32                              
Messages sent/received per client: 200000  (2e5)                   
Is Server GC:                      True                            
Thread count:                      111                             
                                                                   
Num clients, Total [msg], Msgs/sec, Total [ms]                     
         1,  200000,    109770,    1822.14                         
         5, 1000000,    192902,    5184.79                         
        10, 2000000,    191663,   10435.53                         
        15, 3000000,    191339,   15679.11                         
        20, 4000000,    192725,   20755.78                         
        25, 5000000,    189754,   26350.14                         
        30, 6000000,    189772,   31617.20                         

N.B. these after numbers don't benefit from the performance benefits we observed in v1.4.20 when we invoked ThreadPool.SetMinThreads(0,0), which makes them even more impressive.

Akka.DependencyInjection Updates
We had one major issue we implemented in v1.4.21 for Akka.DependencyInjection: Abstraction of ServiceProvider, Improving Akka.DependencyInjection

What this change did was:

  • Deprecate the Akka.DependencyInjection.ServiceProvider class in favor of the Akka.DependencyInjection.DependencyResolver class - to avoid namespace collision with Microsoft.Extensions.DependencyInjection.ServiceProvider;
  • Deprecates the Akka.DependencyInjection.ServiceProviderSetup class in favor of the Akka.DependencyInjection.DependencyResolverSetup class for consistency reasons;
  • Akka.DependencyInjection.DependencyResolver now takes an input of type IDependencyResolver, which allows users to abstract away the IServiceProvider and mock / replace it during unit testing; and
  • Added some non-generic Props methods for dynamically spawning actors via DI.

All of these changes are backwards-compatible with v1.4.20 and earlier - and the deprecation warnings will appear in your code when you upgrade. If you run into any issues upgrading to Akka.DependencyInjection v1.4.21 please reply on this thread!

Other Changes and Fixes

To see the full set of fixes in Akka.NET v1.4.21, please see the milestone on Github.

COMMITS LOC+ LOC- AUTHOR
5 34 24 Aaron Stannard
4 196 77 Gregorius Soedharmo
3 3 3 dependabot[bot]
1 2 2 Wessel Kranenborg
1 1 1 Martijn Schoemaker

Changes:

  • a8347c5 Merge pull request #5096 from akkadotnet/dev
  • 5c9f8a7 v1.4.21 final release notes (#5095)
  • 5d557d0 Bump Microsoft.NET.Test.Sdk from 16.9.4 to 16.10.0 (#5041)
  • fa5ca50 Add failure handling for BatchingSqlJournal SelectCurrentPersistenceIds message batching (#5094)
  • 0210e21 Fix GSet elements needs to be sorted (#5093)
  • 456d795 TestKit ReceiveWhile did not insert last inspected message properly. (#5092)
  • c485d9e cleaned up internal ActorCell and TestKit methods (#5091)
  • dfd7925 Return T from `IDependencyResolver.GetService() (#5087) [ #5086 ]
  • 6a7373f Fix Akka.Remote serialization exception bubbling and messages (#5072)
  • 35b1bb5 added FQDN reproduction for ActorPath.Parse (#5084) [ #5083 ]
See More
  • cf34e37 Bump Microsoft.Data.SQLite from 5.0.6 to 5.0.7 (#5081)
  • 8d13c3d Bump NUnit3TestAdapter from 3.17.0 to 4.0.0 (#5079)
  • 8565eaa Fix documentation flaw for "Forward" (#5078)
  • 90afdb7 Use TimestampProvider in QueryExecutor.InsertABatchAsync, fixes #5076 (#5077)
  • 16fef39 Akka.Coordination: minor cleanup (#5074)
  • 95cdfac v1.4.21-beta1 Release Notes (#5071)
  • b1a9aa6 eliminate Lazy from Address (#5068)
  • 4bd3ef9 Remove ThreadPool.SetMinThreads(0,0) mention from dispatchers documentation (#5069)
  • 15492d0 Reduced allocations around ActorCell and Task handling (#5053)
  • 2715c36 Revert ThreadPool.SetMinThreads(0,0) (#5059)
  • 1bec20a Fix DData infinite status/gossip round (#5056)
  • 8982b64 remove ISSUE_TEMPLATE.md (#5057)
  • 83426ae fixed incorrect deprecation message (#5054)
  • f6da797 Bring UnfoldResourceSourceAsync up-to-date (#5052)
  • 566dbe3 Removed StringBuilder allocation from Base64Encoding (#5051)
  • c21289e Remove Uri.TryParse and replace with Span<char> parsing (#5039) [ #4814 ]
  • 98ef574 changed job configuration for ActorMemoryFootprintBenchmark (#5048)
  • 1938a20 added dedicated footprint for measuring Actor memory footprint (#5047)
  • 73d19af Add ActorSystemSetup setup (#5045)
  • 410066f [MNTR] fix test dll loading error (#5044)
  • c663bc2 Abstraction of ServiceProvider, Improving Akka.DependencyInjection (#4814)
  • 99afc0e Bump Google.Protobuf from 3.17.1 to 3.17.2 (#5040)
  • 3dc2e35 Bump Google.Protobuf from 3.17.0 to 3.17.1 (#5036)
  • b888b40 A couple of fixes affecting the FileSubscriber (#5035)
  • 431b69e Turn on DData related ClusterSharding MNTR specs (#4926)
  • 3f8fa29 Improve MurmurHash string hash memory footprint (#5028)
  • 6f5b003 remove ActorPath.ToString call from ResolveActorRefWithLocalAddress (#5034)
  • 99be70b Consolidate intercept (#5033)
  • 61d08b7 Fix a potential race condition in FileSubscriber (#5032)
  • 5294e9a added FastHash benchmark (#5029)
  • aa8a3de adding ORSet benchmarks (#4990)
  • b5f6552 Bump Google.Protobuf from 3.16.0 to 3.17.0 (#5012)
  • d0afa72 Bump BenchmarkDotNet from 0.12.1 to 0.13.0 (#5024)
  • 0869e49 Increase timeout value to avoid timeout failure (#5021)
  • 3f6182c Fix AkkaProtocolStressTest spec (#5020)
  • 1875c32 Enable skipped specs, they're working now (#5018)
  • e51d46b Enable skipped batching SQLite specs, these runs just fine now. (#5017)
  • 594eb7c [RACY] LoggerSpec TestOutputLogger Make sure that event receive order does not matter (#5015)
  • bc5a2e4 Fix SonarQube's "IEnumerable LINQs should be simplified" / Code Smell (#5013)
  • 0ef7f07 Merge pull request #5011 from brah-mcdude/dev
  • 3ebbfcf Update RELEASE_NOTES.md (#5009)

This list of changes was auto generated.