Skip to content

Commit e453945

Browse files
authored
Added optional ClusterIdentity parameter to IMemberStrategy.GetActivator (#2410)
* Added optional ClusterIdentity parameter to IMemberStrategy.GetActivator * Refactor / cleanup / tag obsolete
1 parent b800daf commit e453945

File tree

5 files changed

+21
-9
lines changed

5 files changed

+21
-9
lines changed

src/Proto.Cluster/Identity/IdentityStorageWorker.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ async Task<PidResult> Inner()
143143
//are there any members that can spawn this kind?
144144
//if not, just bail out
145145

146-
var activator = _memberList.GetActivator(clusterIdentity.Kind, sender.Address);
146+
var activator = _memberList.GetActivator(clusterIdentity, sender.Address);
147147

148148
if (activator == null)
149149
{

src/Proto.Cluster/Membership/MemberList.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@ public MemberList(Cluster cluster, bool isClient = false)
137137
internal Task<(bool consensus, ulong topologyHash)> TopologyConsensus(CancellationToken ct) =>
138138
_consensusManager.TopologyConsensus(ct);
139139

140-
internal Member? GetActivator(string kind, string requestSourceAddress) =>
141-
_memberStrategyManager.GetActivator(kind, requestSourceAddress);
140+
internal Member? GetActivator(ClusterIdentity identity, string requestSourceAddress) =>
141+
_memberStrategyManager.GetActivator(identity, requestSourceAddress);
142142

143143
/// <summary>
144144
/// Used by clustering providers to update the member list.

src/Proto.Cluster/Membership/MemberStrategy.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// </copyright>
55
// -----------------------------------------------------------------------
66

7+
using System;
78
using System.Collections.Immutable;
89
using System.Linq;
910

@@ -37,8 +38,19 @@ public interface IMemberStrategy
3738
/// <summary>
3839
/// Assigns a virtual actor to a member.
3940
/// </summary>
41+
/// <param name="identity">Identity of the virtual actor to activate</param>
4042
/// <param name="senderAddress">Network address of the process that initiated the activation</param>
4143
/// <returns>Member to spawn on</returns>
44+
#pragma warning disable CS0618 // Type or member is obsolete
45+
Member? GetActivator(ClusterIdentity identity, string senderAddress) => GetActivator(senderAddress);
46+
#pragma warning restore CS0618 // Type or member is obsolete
47+
48+
/// <summary>
49+
/// Assigns a virtual actor to a member.
50+
/// </summary>
51+
/// <param name="senderAddress">Network address of the process that initiated the activation</param>
52+
/// <returns>Member to spawn on</returns>
53+
[Obsolete("Use GetActivator(ClusterIdentity identity, string senderAddress) instead")]
4254
Member? GetActivator(string senderAddress);
4355
}
4456

src/Proto.Cluster/Membership/MemberStrategyManager.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ internal class MemberStrategyManager
2323

2424
internal MemberStrategyManager(Cluster cluster) => _cluster = cluster;
2525

26-
internal Member? GetActivator(string kind, string requestSourceAddress)
26+
internal Member? GetActivator(ClusterIdentity identity, string requestSourceAddress)
2727
{
28-
if (_memberStrategyByKind.TryGetValue(kind, out var memberStrategy))
28+
if (_memberStrategyByKind.TryGetValue(identity.Kind, out var memberStrategy))
2929
{
30-
return memberStrategy.GetActivator(requestSourceAddress);
30+
return memberStrategy.GetActivator(identity, requestSourceAddress);
3131
}
3232

33-
Logger.DidNotFindActivatorForKind(kind);
33+
Logger.DidNotFindActivatorForKind(identity.Kind);
3434

3535
return null;
3636
}

src/Proto.Cluster/Partition/PartitionIdentityActor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ private Task OnActivationRequest(ActivationRequest msg, IContext context)
580580
}
581581

582582
//Get activator
583-
var activatorAddress = _cluster.MemberList.GetActivator(msg.Kind, context.Sender!.Address)?.Address;
583+
var activatorAddress = _cluster.MemberList.GetActivator(msg.ClusterIdentity, context.Sender!.Address)?.Address;
584584

585585
if (string.IsNullOrEmpty(activatorAddress))
586586
{
@@ -687,7 +687,7 @@ TaskCompletionSource<ActivationResponse> setResponse
687687
}
688688

689689
var currentActivatorAddress =
690-
_cluster.MemberList.GetActivator(msg.Kind, context.Sender!.Address)?.Address;
690+
_cluster.MemberList.GetActivator(msg.ClusterIdentity, context.Sender!.Address)?.Address;
691691

692692
if (_myAddress != currentActivatorAddress)
693693
{

0 commit comments

Comments
 (0)