Akka.NET v1.4.19 is a substantial release that includes a number of critical Akka.Cluster fixes, baseline Akka.NET performance improvements, and entirely new dispatcher that has shown to improve performance when used across all of the major actor groups that run both inside the /user hierarchy and the /system actor hierarchy as well.
We ultimately solved the problem - it is now quite feasible to rapidly scale an Akka.NET cluster from ~10 nodes to 50+ nodes without having a huge number of quarantines, accidentally downed nodes, and so on.
Here's the full set of fixes that went into resolving this issue:
Akka.Cluster is now much more robust, faster, and capable of scaling up and down much more efficiently than in previous releases.
ChannelExecutor and Akka Performance Improvements
In addition to improving Akka.Cluster, we also made substantial improvements to constructs found inside Akka.NET core itself:
In Akka.NET v1.4.19 we introduce an opt-in feature, the ChannelExecutor - a new dispatcher type that re-uses the same configuration as a ForkJoinDispatcher but runs entirely on top of the .NET ThreadPool and is able to take advantage of dynamic thread pool scaling to size / resize workloads on the fly.
In order to get the most use out of the ChannelExecutor, the default actor dispatcher, the internal dispatcher, and the Akka.Remote dispatchers all need to run on it - and you can see the latest configuration settings and guidance for that here in our documentation: https://getakka.net/articles/actors/dispatchers.html#channelexecutor
But a copy of today's configuration is included below - you can enable this feature inside your Akka.NET applications via the following HOCON:
Akka.NET v1.4.19 is a substantial release that includes a number of critical Akka.Cluster fixes, baseline Akka.NET performance improvements, and entirely new dispatcher that has shown to improve performance when used across all of the major actor groups that run both inside the /user hierarchy and the /system actor hierarchy as well.
We ultimately solved the problem - it is now quite feasible to rapidly scale an Akka.NET cluster from ~10 nodes to 50+ nodes without having a huge number of quarantines, accidentally downed nodes, and so on.
Here's the full set of fixes that went into resolving this issue:
Akka.Cluster is now much more robust, faster, and capable of scaling up and down much more efficiently than in previous releases.
ChannelExecutor and Akka Performance Improvements
In addition to improving Akka.Cluster, we also made substantial improvements to constructs found inside Akka.NET core itself:
In Akka.NET v1.4.19 we introduce an opt-in feature, the ChannelExecutor - a new dispatcher type that re-uses the same configuration as a ForkJoinDispatcher but runs entirely on top of the .NET ThreadPool and is able to take advantage of dynamic thread pool scaling to size / resize workloads on the fly.
In order to get the most use out of the ChannelExecutor, the default actor dispatcher, the internal dispatcher, and the Akka.Remote dispatchers all need to run on it - and you can see the latest configuration settings and guidance for that here in our documentation: https://getakka.net/articles/actors/dispatchers.html#channelexecutor
But a copy of today's configuration is included below - you can enable this feature inside your Akka.NET applications via the following HOCON:
Akka.NET v1.4.19 is a substantial release that includes a number of critical Akka.Cluster fixes, baseline Akka.NET performance improvements, and entirely new dispatcher that has shown to improve performance when used across all of the major actor groups that run both inside the /user hierarchy and the /system actor hierarchy as well.
We ultimately solved the problem - it is now quite feasible to rapidly scale an Akka.NET cluster from ~10 nodes to 50+ nodes without having a huge number of quarantines, accidentally downed nodes, and so on.
Here's the full set of fixes that went into resolving this issue:
Akka.Cluster is now much more robust, faster, and capable of scaling up and down much more efficiently than in previous releases.
ChannelExecutor and Akka Performance Improvements
In addition to improving Akka.Cluster, we also made substantial improvements to constructs found inside Akka.NET core itself:
In Akka.NET v1.4.19 we introduce an opt-in feature, the ChannelExecutor - a new dispatcher type that re-uses the same configuration as a ForkJoinDispatcher but runs entirely on top of the .NET ThreadPool and is able to take advantage of dynamic thread pool scaling to size / resize workloads on the fly.
In order to get the most use out of the ChannelExecutor, the default actor dispatcher, the internal dispatcher, and the Akka.Remote dispatchers all need to run on it - and you can see the latest configuration settings and guidance for that here in our documentation: https://getakka.net/articles/actors/dispatchers.html#channelexecutor
But a copy of today's configuration is included below - you can enable this feature inside your Akka.NET applications via the following HOCON:
Akka.NET v1.4.19 is a substantial release that includes a number of critical Akka.Cluster fixes, baseline Akka.NET performance improvements, and entirely new dispatcher that has shown to improve performance when used across all of the major actor groups that run both inside the /user hierarchy and the /system actor hierarchy as well.
We ultimately solved the problem - it is now quite feasible to rapidly scale an Akka.NET cluster from ~10 nodes to 50+ nodes without having a huge number of quarantines, accidentally downed nodes, and so on.
Here's the full set of fixes that went into resolving this issue:
Akka.Cluster is now much more robust, faster, and capable of scaling up and down much more efficiently than in previous releases.
ChannelExecutor and Akka Performance Improvements
In addition to improving Akka.Cluster, we also made substantial improvements to constructs found inside Akka.NET core itself:
In Akka.NET v1.4.19 we introduce an opt-in feature, the ChannelExecutor - a new dispatcher type that re-uses the same configuration as a ForkJoinDispatcher but runs entirely on top of the .NET ThreadPool and is able to take advantage of dynamic thread pool scaling to size / resize workloads on the fly.
In order to get the most use out of the ChannelExecutor, the default actor dispatcher, the internal dispatcher, and the Akka.Remote dispatchers all need to run on it - and you can see the latest configuration settings and guidance for that here in our documentation: https://getakka.net/articles/actors/dispatchers.html#channelexecutor
But a copy of today's configuration is included below - you can enable this feature inside your Akka.NET applications via the following HOCON:
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps
AkkaVersion
from 1.4.16 to 1.4.19. UpdatesAkka.Persistence.Sql.Common
from 1.4.16 to 1.4.19Release notes
Sourced from Akka.Persistence.Sql.Common's releases.
... (truncated)
Changelog
Sourced from Akka.Persistence.Sql.Common's changelog.
... (truncated)
Commits
7a34a14
v1.4.19 Akka.NET Release (#4987)a3feeef
added v1.4.19 release notes (#4985)82d7909
Upgrade to GitHub-native Dependabot (#4984)bdfc893
IntroduceChannelExecutor
(#4882)e58d36a
Removed inaccurate warning from Cluster Singleton docs (#4980)a1fa221
Update PluginSpec so that it can accept ActorSystem and ActorSystemSetup in i...101f5a2
fixed racy ActorModelSpec (#4976)d178b63
clean up seed node process (#4975)321d0e4
ORDictionary with POCO value missing items, add MultiNode spec (#4910)442f8eb
Fix serialization verification problem with Akka.IO messages (#4974)Updates
Akka.Persistence.Sql.TestKit
from 1.4.16 to 1.4.19Release notes
Sourced from Akka.Persistence.Sql.TestKit's releases.
... (truncated)
Changelog
Sourced from Akka.Persistence.Sql.TestKit's changelog.
... (truncated)
Commits
7a34a14
v1.4.19 Akka.NET Release (#4987)a3feeef
added v1.4.19 release notes (#4985)82d7909
Upgrade to GitHub-native Dependabot (#4984)bdfc893
IntroduceChannelExecutor
(#4882)e58d36a
Removed inaccurate warning from Cluster Singleton docs (#4980)a1fa221
Update PluginSpec so that it can accept ActorSystem and ActorSystemSetup in i...101f5a2
fixed racy ActorModelSpec (#4976)d178b63
clean up seed node process (#4975)321d0e4
ORDictionary with POCO value missing items, add MultiNode spec (#4910)442f8eb
Fix serialization verification problem with Akka.IO messages (#4974)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)