Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.4.21 Release #5096

Merged
merged 50 commits into from
Jun 16, 2021
Merged

v1.4.21 Release #5096

merged 50 commits into from
Jun 16, 2021

Conversation

Aaronontheweb
Copy link
Member

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

Aaronontheweb and others added 30 commits May 12, 2021 18:02
… does not matter (#5015)

* Make sure that event receive order does not matter

* Remove repeat attribute
Bumps [BenchmarkDotNet](https://github.com/dotnet/BenchmarkDotNet) from 0.12.1 to 0.13.0.
- [Release notes](https://github.com/dotnet/BenchmarkDotNet/releases)
- [Commits](dotnet/BenchmarkDotNet@v0.12.1...v0.13.0)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [Google.Protobuf](https://github.com/protocolbuffers/protobuf) from 3.16.0 to 3.17.0.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/master/generate_changelog.py)
- [Commits](protocolbuffers/protobuf@v3.16.0...v3.17.0)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* adding ORSet benchmarks

Working on #4956

* added VersionVectorBenchmark

Using this to help gauge ORSet / other CRDT merge performance

* moved all `VersionVector` comparisons to use `ValueTuple` instead of `KeyValuePair`

* temporarily lowered ORSetBenchmark parameters

* added VersionVector merge benchmarks and cleaned up code

* working on more benchmarking for ORSet
* Removed a bunch of obsolete and unused methods

* Consolidate Intercept methods, and add the new AssertThrows

* Fixed a few tests that where dealing with the AggregateExceptions themselves
…s` (#5034)

* remove `ActorPath.ToString` call from `ResolveActorRefWithLocalAddress`

* remove comment
* Reduce memory footprint

* Fix enumerator, off by 1 error
* Merge LMDB config into DistributedData

* Remove DistributedData config from ClusterSharding config, only values that overrides/adds to the config are retained, config is then composed together in code.

* Turn on DData related specs in ClusterSharding MNTR specs.

* Fix Multinode spec ClusterShardingSpec

* Fix DData remember-entities feature

* Revert "Fix Multinode spec ClusterShardingSpec"

This reverts commit 80897e5.

* Fix spec

* Fix how and when LMDB disposes its resources

* Harden remember-entities spec, spec must work when remember-entities are both set and unset

Co-authored-by: Aaron Stannard <[email protected]>
* Fail materialized Task of IO stages when stream fails

* Fail FileSubscriber's Task if it can't open the file
Bumps [Google.Protobuf](https://github.com/protocolbuffers/protobuf) from 3.17.0 to 3.17.1.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/master/generate_changelog.py)
- [Commits](protocolbuffers/protobuf@v3.17.0...v3.17.1)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…4814)

* Abstraction of ServiceProvider

* introduced non-breaking Akka.DependencyInjection API changes

* fixed unit tests / Props bug

* fixed up DelegateInjectionSpecs

* Added type checking for `Props(Type type, params object[] args)`

* fixed non-generic `Props()` method

Co-authored-by: Aaron Stannard <[email protected]>
* Fix assembly loading

* Fix regex for passing test

* Try to start a full build

* Regex \w includes underscore

* Revert back regex to \w

* Update NotUsed.cs

Co-authored-by: Aaron Stannard <[email protected]>
* `Span<char>`-ifying ActorPath and Address parsing

Abstraction of ServiceProvider, Improving Akka.DependencyInjection (#4814)

* Abstraction of ServiceProvider

* introduced non-breaking Akka.DependencyInjection API changes

* fixed unit tests / Props bug

* fixed up DelegateInjectionSpecs

* Added type checking for `Props(Type type, params object[] args)`

* fixed non-generic `Props()` method

Co-authored-by: Aaron Stannard <[email protected]>

completed work on ActorPath parsing

* restore Parse performance to ActorPath.Parse

* fixed `ActorPath.ToString()`
* Removed `StringBuilder` allocation from `Base64Encoding`

* Update Base64Encoding.cs

* implemented feedback
* Bring UnfoldResourceSourceAsync up-to-date

* Fix for unstable UnfoldResourceAsync tests
Changed `Akka.DependencyInjection.ServiceProvider` deprecation message to read "1.4.21" rather than 1.4.20
We now get issue templates from the Akka.NET organization itself https://github.com/akkadotnet/.github
Arkatufus and others added 20 commits June 2, 2021 01:54
* Fix LMDB durable store logging problem

* Sort ORSet elements on serialization to address inconsistent digest problem

* Change IComparable to IComparer

Co-authored-by: Aaron Stannard <[email protected]>
* Made `ActorCell.SendSystemMessage` `virtual` so it can be subclassed
* Made a number of `ActorCell` methods `static` to reduce object memory footprint
* Reduced number of possible `Task` allocations where they weren't needed
* v1.4.21-beta1 release notes
Bumps [NUnit3TestAdapter](https://github.com/nunit/nunit3-vs-adapter) from 3.17.0 to 4.0.0.
- [Release notes](https://github.com/nunit/nunit3-vs-adapter/releases)
- [Commits](nunit/nunit3-vs-adapter@V3.17...V4.0.0)

---
updated-dependencies:
- dependency-name: NUnit3TestAdapter
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [Microsoft.Data.SQLite](https://github.com/dotnet/efcore) from 5.0.6 to 5.0.7.
- [Release notes](https://github.com/dotnet/efcore/releases)
- [Commits](dotnet/efcore@v5.0.6...v5.0.7)

---
updated-dependencies:
- dependency-name: Microsoft.Data.SQLite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Fix exception bubbling and messages

* Remove reference to DData project

* Remove reference to Akka.Cluster

* Remove generic exception handling

* Add a very specific exception handling for failed payload deserialization

Co-authored-by: Aaron Stannard <[email protected]>
Found some methods that could be made static on `ActorCell`, which should help with total actor memory footprint.
…5092)

* Add bug reproduction spec

* Code cleanup, make sure locks are used properly

* Make sure BlockingQueue inserts items properly

* Code and spec cleanup, make sure that code is readable and works as intended

* Revert "Code and spec cleanup, make sure that code is readable and works as intended"

This reverts commit 09ece29.

Co-authored-by: Aaron Stannard <[email protected]>
…ds message batching (#5094)

* Add failure handling for BatchingSqlJournal SelectCurrentPersistenceIds message batching

* Do not throw an exception inside a failure handler, throwing will swallow the original failure cause, create a confusing error log, and blow up BatchingSqlJournal failure handling.

* Add missing using to make sure reader is properly disposed
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.9.4 to 16.10.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v16.9.4...v16.10.0)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aaron Stannard <[email protected]>
* added v1.4.21 release notes

* updated contributor numbers
@Aaronontheweb Aaronontheweb merged commit a8347c5 into master Jun 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants