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

Akka.NET v1.4.25 Release #5275

Merged
merged 46 commits into from
Sep 8, 2021
Merged

Akka.NET v1.4.25 Release #5275

merged 46 commits into from
Sep 8, 2021

Conversation

Aaronontheweb
Copy link
Member

1.4.25 September 08 2021

Maintenance Release for Akka.NET 1.4
Akka.NET v1.4.25 includes some significant performance improvements for Akka.Remote and a number of important bug fixes and improvements.

Bug Fixes and Improvements

Performance Improvements
Using our standard RemotePingPong benchmark, the difference between v1.4.24 and v1.4.24 is significant:

v1.4.24

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,     96994,    2062.08                         
         5, 1000000,    194818,    5133.93                         
        10, 2000000,    198966,   10052.93                         
        15, 3000000,    199455,   15041.56                         
        20, 4000000,    198177,   20184.53                         
        25, 5000000,    197613,   25302.80                         
        30, 6000000,    197349,   30403.82                         

v1.4.25

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,    130634,    1531.54
         5, 1000000,    246975,    4049.20
        10, 2000000,    244499,    8180.16
        15, 3000000,    244978,   12246.39
        20, 4000000,    245159,   16316.37
        25, 5000000,    243333,   20548.09
        30, 6000000,    241644,   24830.55

This represents a 24% overall throughput improvement in Akka.Remote across the board. We have additional PRs staged that should get aggregate performance improvements above 40% for Akka.Remote over v1.4.24 but they didn't make it into the Akka.NET v1.4.25 release.

You can see the full set of changes introduced in Akka.NET v1.4.25 here

COMMITS LOC+ LOC- AUTHOR
32 1301 400 Aaron Stannard
4 358 184 Andreas Dirnberger
3 414 149 Gregorius Soedharmo
3 3 3 dependabot[bot]
2 43 10 zbynek001
1 14 13 tometchy
1 139 3 carlcamilleri

Aaronontheweb and others added 30 commits August 17, 2021 17:19
* introduced new project for Akka.Cluster.Benchmarks

* added first set of sharding performance specs

* fixed local benchmark

* completed entity routing benchmarks

* added spawn entities benchmark

* added SpawnEntities benchmark

* fixed spawn benchmarks
Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 16.10.0 to 16.11.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v16.10.0...v16.11.0)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aaron Stannard <aaron@petabridge.com>
Bumps `FsCheckVersion` from 2.15.3 to 2.16.0.

Updates `FsCheck` from 2.15.3 to 2.16.0
- [Release notes](https://github.com/fsharp/FsCheck/releases)
- [Changelog](https://github.com/fscheck/FsCheck/blob/master/FsCheck%20Release%20Notes.md)
- [Commits](fscheck/FsCheck@2.15.3...2.16.0)

Updates `FsCheck.Xunit` from 2.15.3 to 2.16.0
- [Release notes](https://github.com/fsharp/FsCheck/releases)
- [Changelog](https://github.com/fscheck/FsCheck/blob/master/FsCheck%20Release%20Notes.md)
- [Commits](fscheck/FsCheck@2.15.3...2.16.0)

---
updated-dependencies:
- dependency-name: FsCheck
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: FsCheck.Xunit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…a/akka#30328) (#5227)

* this saves at least 2 seconds where the coordinator is not able to respond
  when the oldest node is shutdown
There was missing last curly bracket.
Co-authored-by: Aaron Stannard <aaron@petabridge.com>
…oxy (#5232)

* Benchmark to test SingleRequestResponseToRemoteEntity with a local proxy

* re-enable benchmark SingleRequestResponseToLocalEntity

Co-authored-by: Carl Camilleri <carl.camilleri@cs-technologies.net>
Co-authored-by: Aaron Stannard <aaron@petabridge.com>
If there were a major issue with the batching journals since v1.4.19, it would have been reported by now.
…ingLogic instead (#5237)

Co-authored-by: Aaron Stannard <aaron@petabridge.com>
* make Router.Route virtual

* added API approval

* changed Router.Routees to just return underlying array

* Revert "changed Router.Routees to just return underlying array"

This reverts commit d83f605.
* adding `GetChild` benchmark

* added deeper query benchmark
designed to help measure how quickly we can resolve a temporary actor upon deserialization
* improveme child lookup performance

* modified `IActorRef.Child` API to accept a `IReadOnlyList<T>` instead of `IEnumerable<T>`

* fixed a bug with low-level resolution

* approved core API changes

* approved again....

* fixed - was missing one approval

* added extension method to simplify copying

* cleaned up RepointableActorRef

* cleaned up branching

* implemented CopyTo method for debugging

* added child-resolve program

* removed expensive allocation from `MinimalActorRef.GetChild`

* Revert "added child-resolve program"

This reverts commit 8cce9b7.

* fixed indexer operation

* simplified branching inside `TryGetSingleChild`

* removed redundant TryOut methods
* Ask should push unhandled answers into deadletter

* update future handler

* fix unit test

* remove not needed return

* remove redundant sync lock

* remove redudant code and seal class

* update api spec

* update api spec 2

* handle of Status.Failure
The `AwaitAssert` is actually what made this spec racy
…PersistenceIds_publisher_when_the_last_subscriber_left (#5257)

Not a good test - tightly couples to private implementation details for a given journal, plus it's racy. Better to test the stream stage it uses directly or use Akka.Streams completion semantics to check.
Bumps `FsCheckVersion` from 2.16.0 to 2.16.3.

Updates `FsCheck` from 2.16.0 to 2.16.3
- [Release notes](https://github.com/fsharp/FsCheck/releases)
- [Changelog](https://github.com/fscheck/FsCheck/blob/master/FsCheck%20Release%20Notes.md)
- [Commits](fscheck/FsCheck@2.16.0...2.16.3)

Updates `FsCheck.Xunit` from 2.16.0 to 2.16.3
- [Release notes](https://github.com/fsharp/FsCheck/releases)
- [Changelog](https://github.com/fscheck/FsCheck/blob/master/FsCheck%20Release%20Notes.md)
- [Commits](fscheck/FsCheck@2.16.0...2.16.3)

---
updated-dependencies:
- dependency-name: FsCheck
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: FsCheck.Xunit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Aaronontheweb and others added 16 commits September 6, 2021 20:13
Timings were too closely fitted with the timers programmed inside the `TestStage` - added margins to allow for less-than-perfect clock resolution.
second stab at this - just don't re-use the actor's name and decouple the PersistentId from it.
Removing yet another problematic `ExpectNoMsgs` call....
* harden `ClusterShardingLeavingSpec`

adding debug logging to `ClusterShardingLeavingSpec`

* added more debug logging

* fixed logging bug inside `ShardRegion. SendGracefulShutdownToCoordinatorIfInProgress`

* fixed KV deconstruction

* deprecated custom AsyncWriteProxy `Ask` implementation

* allow all nodes to join at once and start sharding system right away

* remove `FuturesEx`
Accidentally shared a database with the "all events by tag" query, which caused the spec to have a dirty read
so the `PipeTo` _can_ be delayed because it's running inside the `ActorTaskScheduler`, which also schedules the `Task.Delay` below.
* Ask should push unhandled answers into deadletter

* update future handler

* fix unit test

* remove not needed return

* remove redundant sync lock

* remove redudant code and seal class

* update api spec

* update api spec 2

* handle of Status.Failure

* ask should fail on system messages
…atten (#5260)

* Fix Dns.Resolve issue by using ContinueWith and AggregateException.Flatten

* Capture Sender as a local variable to scope it to local

Co-authored-by: Aaron Stannard <aaron@petabridge.com>
…nce (#5228)

* experimenting with RemoteActorRefProvider address resolution performance

* implemented suggestions

* fixed `Address.==` and `Address.!=`

* fixed operators and generic equals

* cleaned up `Address.==`

* fixed `Address.==`
…system lifecycle (#5251)

* Make sure stdout-loglevel setting is honored through the whole actor system lifecycle

* Add settings spec for the new StandardOutLogger setting

* Update API Approver list

* Test logger can still output logs

* Suppress LoggerInitialized from deadletter

* Update API Approver list

* Remove LogLevel.OffLevel for backward compatibility

* Update API Approver list

* Re-add OffLogLevel private const

* Fix XML doc and previously hardwired StandardOutLogger type checking.

* Add documentation to the new MinimalLogger implementation

* Change equality to inheritance check

* Add MinimalLogger spec

Co-authored-by: Aaron Stannard <aaron@petabridge.com>
)

Co-authored-by: Aaron Stannard <aaron@petabridge.com>
* stubbed out v1.4.25 release notes

* completed v1.4.25 release notes
@Aaronontheweb Aaronontheweb merged commit 42061a3 into master Sep 8, 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.

6 participants