diff --git a/docs/articles/actors/receive-actor-api.md b/docs/articles/actors/receive-actor-api.md index 7740a5c78db..43efb8788f3 100644 --- a/docs/articles/actors/receive-actor-api.md +++ b/docs/articles/actors/receive-actor-api.md @@ -403,6 +403,9 @@ Task.WhenAll(tasks).PipeTo(actorC, Self); This example demonstrates `Ask` together with the `Pipe` Pattern on tasks, because this is likely to be a common combination. Please note that all of the above is completely non-blocking and asynchronous: `Ask` produces a `Task`, two of which are awaited until both are completed, and when that happens, a new `Result` object is forwarded to another actor. +> [!NOTE] +> While `Ask` waits for a response, that does not ensure it receives any kind of priority. Messages sent via `Ask` queue in actor mailboxes the same way that messages sent via `Tell` do. You may need to adapt your actor hierarchy if `Ask` messages might be impeded by a large queue in an actor's mailbox. + Using `Ask` will send a message to the receiving Actor as with `Tell`, and the receiving actor must reply with `Sender.Tell(reply, Self)` in order to complete the returned `Task` with a value. The `Ask` operation involves creating an internal actor for handling this reply, which needs to have a timeout after which it is destroyed in order not to leak resources; see more below. > [!WARNING] diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 5549db54d85..d55e8d7735f 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -2,7 +2,7 @@ Copyright © 2013-2023 Akka.NET Team Akka.NET Team - 1.5.7 + 1.5.14 akkalogo.png https://github.com/akkadotnet/akka.net https://github.com/akkadotnet/akka.net/blob/master/LICENSE @@ -24,7 +24,7 @@ 0.12.2 [13.0.1,) 2.0.1 - 3.24.3 + 3.24.4 0.13.9 net7.0 6.0.5 @@ -67,4 +67,4 @@ - + \ No newline at end of file diff --git a/src/benchmark/Akka.Benchmarks/Akka.Benchmarks.csproj b/src/benchmark/Akka.Benchmarks/Akka.Benchmarks.csproj index f16ed08be7d..8af1c8df081 100644 --- a/src/benchmark/Akka.Benchmarks/Akka.Benchmarks.csproj +++ b/src/benchmark/Akka.Benchmarks/Akka.Benchmarks.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/benchmark/Akka.Cluster.Benchmarks/Akka.Cluster.Benchmarks.csproj b/src/benchmark/Akka.Cluster.Benchmarks/Akka.Cluster.Benchmarks.csproj index 31233522eeb..976eb54e699 100644 --- a/src/benchmark/Akka.Cluster.Benchmarks/Akka.Cluster.Benchmarks.csproj +++ b/src/benchmark/Akka.Cluster.Benchmarks/Akka.Cluster.Benchmarks.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/contrib/cluster/Akka.Cluster.Sharding/ClusterSharding.cs b/src/contrib/cluster/Akka.Cluster.Sharding/ClusterSharding.cs index c6b8e35ec77..e944e0f18e6 100644 --- a/src/contrib/cluster/Akka.Cluster.Sharding/ClusterSharding.cs +++ b/src/contrib/cluster/Akka.Cluster.Sharding/ClusterSharding.cs @@ -1415,10 +1415,13 @@ public IShardAllocationStrategy DefaultShardAllocationStrategy(ClusterShardingSe } else { + // TODO: remove this in v1.6 and force all users to use only the new strategy going forward // old algorithm var threshold = settings.TuningParameters.LeastShardAllocationRebalanceThreshold; var maxSimultaneousRebalance = settings.TuningParameters.LeastShardAllocationMaxSimultaneousRebalance; +#pragma warning disable CS0618 // Type or member is obsolete return new LeastShardAllocationStrategy(threshold, maxSimultaneousRebalance); +#pragma warning restore CS0618 // Type or member is obsolete } } } diff --git a/src/contrib/cluster/Akka.Cluster.Sharding/ShardAllocationStrategy.cs b/src/contrib/cluster/Akka.Cluster.Sharding/ShardAllocationStrategy.cs index 8b562e953b2..786e94b8301 100644 --- a/src/contrib/cluster/Akka.Cluster.Sharding/ShardAllocationStrategy.cs +++ b/src/contrib/cluster/Akka.Cluster.Sharding/ShardAllocationStrategy.cs @@ -139,6 +139,7 @@ public static IShardAllocationStrategy LeastShardAllocationStrategy(int absolute /// The number of ongoing rebalancing processes can be limited by `maxSimultaneousRebalance`. /// [Serializable] + [Obsolete("Use ShardAllocationStrategy.LeastShardAllocationStrategy instead. This will be removed in v1.6.")] public class LeastShardAllocationStrategy : AbstractLeastShardAllocationStrategy { private readonly int _rebalanceThreshold; diff --git a/src/contrib/cluster/Akka.DistributedData.LightningDB/Akka.DistributedData.LightningDB.csproj b/src/contrib/cluster/Akka.DistributedData.LightningDB/Akka.DistributedData.LightningDB.csproj index 1fe16569cf2..20b6e9a674e 100644 --- a/src/contrib/cluster/Akka.DistributedData.LightningDB/Akka.DistributedData.LightningDB.csproj +++ b/src/contrib/cluster/Akka.DistributedData.LightningDB/Akka.DistributedData.LightningDB.csproj @@ -1,4 +1,4 @@ - + Akka.DistributedData.LightningDB @@ -14,7 +14,7 @@ - + diff --git a/src/contrib/persistence/Akka.Persistence.Sqlite/Akka.Persistence.Sqlite.csproj b/src/contrib/persistence/Akka.Persistence.Sqlite/Akka.Persistence.Sqlite.csproj index c99c18f6669..ed04db28141 100644 --- a/src/contrib/persistence/Akka.Persistence.Sqlite/Akka.Persistence.Sqlite.csproj +++ b/src/contrib/persistence/Akka.Persistence.Sqlite/Akka.Persistence.Sqlite.csproj @@ -15,7 +15,7 @@ - + \ No newline at end of file diff --git a/src/core/Akka.API.Tests/verify/CoreAPISpec.ApproveClusterSharding.DotNet.verified.txt b/src/core/Akka.API.Tests/verify/CoreAPISpec.ApproveClusterSharding.DotNet.verified.txt index 19325ac0b86..2765e2cef3c 100644 --- a/src/core/Akka.API.Tests/verify/CoreAPISpec.ApproveClusterSharding.DotNet.verified.txt +++ b/src/core/Akka.API.Tests/verify/CoreAPISpec.ApproveClusterSharding.DotNet.verified.txt @@ -180,6 +180,8 @@ namespace Akka.Cluster.Sharding { void Start(); } + [System.ObsoleteAttribute("Use ShardAllocationStrategy.LeastShardAllocationStrategy instead. This will be re" + + "moved in v1.6.")] public class LeastShardAllocationStrategy : Akka.Cluster.Sharding.Internal.AbstractLeastShardAllocationStrategy { public LeastShardAllocationStrategy(int rebalanceThreshold, int maxSimultaneousRebalance) { } diff --git a/src/core/Akka.API.Tests/verify/CoreAPISpec.ApproveClusterSharding.Net.verified.txt b/src/core/Akka.API.Tests/verify/CoreAPISpec.ApproveClusterSharding.Net.verified.txt index 133e6d1a3aa..5509ef03982 100644 --- a/src/core/Akka.API.Tests/verify/CoreAPISpec.ApproveClusterSharding.Net.verified.txt +++ b/src/core/Akka.API.Tests/verify/CoreAPISpec.ApproveClusterSharding.Net.verified.txt @@ -180,6 +180,8 @@ namespace Akka.Cluster.Sharding { void Start(); } + [System.ObsoleteAttribute("Use ShardAllocationStrategy.LeastShardAllocationStrategy instead. This will be re" + + "moved in v1.6.")] public class LeastShardAllocationStrategy : Akka.Cluster.Sharding.Internal.AbstractLeastShardAllocationStrategy { public LeastShardAllocationStrategy(int rebalanceThreshold, int maxSimultaneousRebalance) { } diff --git a/src/core/Akka/Util/SpanHacks.cs b/src/core/Akka/Util/SpanHacks.cs index ff618479897..d66b42fc994 100644 --- a/src/core/Akka/Util/SpanHacks.cs +++ b/src/core/Akka/Util/SpanHacks.cs @@ -39,7 +39,7 @@ public static int Parse(ReadOnlySpan str) if (int.TryParse(str, out var i)) return i; #endif - throw new FormatException($"[{str.ToString()}] is now a valid numeric format"); + throw new FormatException($"[{str.ToString()}] is not a valid numeric format"); } private const char Negative = '-'; diff --git a/src/examples/Akka.Persistence.Custom/Akka.Persistence.Custom.csproj b/src/examples/Akka.Persistence.Custom/Akka.Persistence.Custom.csproj index facb218d4d5..c62da5d83f9 100644 --- a/src/examples/Akka.Persistence.Custom/Akka.Persistence.Custom.csproj +++ b/src/examples/Akka.Persistence.Custom/Akka.Persistence.Custom.csproj @@ -5,7 +5,7 @@ - +