diff --git a/src/Orleans.Core/Placement/IPlacementFilterDirector.cs b/src/Orleans.Core/Placement/IPlacementFilterDirector.cs index d02be4de3cf..d725e7ff149 100644 --- a/src/Orleans.Core/Placement/IPlacementFilterDirector.cs +++ b/src/Orleans.Core/Placement/IPlacementFilterDirector.cs @@ -7,5 +7,5 @@ namespace Orleans.Placement; public interface IPlacementFilterDirector { - IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementFilterContext context, IEnumerable silos); + IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementTarget target, IEnumerable silos); } diff --git a/src/Orleans.Core/Placement/PlacementFilterContext.cs b/src/Orleans.Core/Placement/PlacementFilterContext.cs deleted file mode 100644 index b2a7942c5c0..00000000000 --- a/src/Orleans.Core/Placement/PlacementFilterContext.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Orleans.Runtime; - -#nullable enable -namespace Orleans.Placement; - -public readonly record struct PlacementFilterContext(GrainType GrainType, GrainInterfaceType InterfaceType, ushort InterfaceVersion); \ No newline at end of file diff --git a/src/Orleans.Runtime/Placement/Filtering/PreferredMatchSiloMetadataPlacementFilterDirector.cs b/src/Orleans.Runtime/Placement/Filtering/PreferredMatchSiloMetadataPlacementFilterDirector.cs index 64630016659..9a82c7a0e6e 100644 --- a/src/Orleans.Runtime/Placement/Filtering/PreferredMatchSiloMetadataPlacementFilterDirector.cs +++ b/src/Orleans.Runtime/Placement/Filtering/PreferredMatchSiloMetadataPlacementFilterDirector.cs @@ -12,7 +12,7 @@ internal class PreferredMatchSiloMetadataPlacementFilterDirector( ISiloMetadataCache siloMetadataCache) : IPlacementFilterDirector { - public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementFilterContext context, IEnumerable silos) + public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementTarget target, IEnumerable silos) { var preferredMatchSiloMetadataPlacementFilterStrategy = filterStrategy as PreferredMatchSiloMetadataPlacementFilterStrategy; var minCandidates = preferredMatchSiloMetadataPlacementFilterStrategy?.MinCandidates ?? 1; @@ -77,4 +77,4 @@ public IEnumerable Filter(PlacementFilterStrategy filterStrategy, P return siloList.Where((_, i) => siloScores[i] >= scoreCutOff); } -} \ No newline at end of file +} diff --git a/src/Orleans.Runtime/Placement/Filtering/RequiredMatchSiloMetadataPlacementFilterDirector.cs b/src/Orleans.Runtime/Placement/Filtering/RequiredMatchSiloMetadataPlacementFilterDirector.cs index f7aadcd346b..c9ca617bede 100644 --- a/src/Orleans.Runtime/Placement/Filtering/RequiredMatchSiloMetadataPlacementFilterDirector.cs +++ b/src/Orleans.Runtime/Placement/Filtering/RequiredMatchSiloMetadataPlacementFilterDirector.cs @@ -9,7 +9,7 @@ namespace Orleans.Runtime.Placement.Filtering; internal class RequiredMatchSiloMetadataPlacementFilterDirector(ILocalSiloDetails localSiloDetails, ISiloMetadataCache siloMetadataCache) : IPlacementFilterDirector { - public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementFilterContext context, IEnumerable silos) + public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementTarget target, IEnumerable silos) { var metadataKeys = (filterStrategy as RequiredMatchSiloMetadataPlacementFilterStrategy)?.MetadataKeys ?? []; @@ -51,4 +51,4 @@ private static bool DoesMetadataMatch(string?[] localMetadata, SiloMetadata silo return result; } -} \ No newline at end of file +} diff --git a/src/Orleans.Runtime/Placement/PlacementService.cs b/src/Orleans.Runtime/Placement/PlacementService.cs index 49e5b3e85d7..480fe843184 100644 --- a/src/Orleans.Runtime/Placement/PlacementService.cs +++ b/src/Orleans.Runtime/Placement/PlacementService.cs @@ -121,11 +121,10 @@ public SiloAddress[] GetCompatibleSilos(PlacementTarget target) if (filters.Length > 0) { IEnumerable filteredSilos = compatibleSilos; - var context = new PlacementFilterContext(target.GrainIdentity.Type, target.InterfaceType, target.InterfaceVersion); foreach (var placementFilter in filters) { var director = _placementFilterDirectoryResolver.GetFilterDirector(placementFilter); - filteredSilos = director.Filter(placementFilter, context, filteredSilos); + filteredSilos = director.Filter(placementFilter, target, filteredSilos); } compatibleSilos = filteredSilos.ToArray(); diff --git a/test/TesterInternal/PlacementFilterTests/GrainPlacementFilterTests.cs b/test/TesterInternal/PlacementFilterTests/GrainPlacementFilterTests.cs index c3cb89393af..c21f4942440 100644 --- a/test/TesterInternal/PlacementFilterTests/GrainPlacementFilterTests.cs +++ b/test/TesterInternal/PlacementFilterTests/GrainPlacementFilterTests.cs @@ -2,7 +2,6 @@ using Orleans.Placement; using Orleans.Runtime.Placement; using Orleans.TestingHost; -using TestExtensions; using Xunit; namespace UnitTests.PlacementFilterTests; @@ -147,7 +146,7 @@ public class TestPlacementFilterDirector() : IPlacementFilterDirector { public static SemaphoreSlim Triggered { get; } = new(0); - public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementFilterContext context, IEnumerable silos) + public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementTarget target, IEnumerable silos) { Triggered.Release(1); return silos; @@ -167,10 +166,10 @@ public OrderAPlacementFilterStrategy() : this(0) public class OrderAPlacementFilterDirector : IPlacementFilterDirector { - public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementFilterContext context, IEnumerable silos) + public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementTarget target, IEnumerable silos) { var dict = GrainPlacementFilterTests.FilterScratchpad; - var list = dict.GetValueOrAddNew(context.GrainType.ToString()); + var list = dict.GetValueOrAddNew(target.GrainIdentity.Type.ToString()); list.Add("A"); return silos; } @@ -189,10 +188,10 @@ public OrderBPlacementFilterStrategy() : this(0) public class OrderBPlacementFilterDirector() : IPlacementFilterDirector { - public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementFilterContext context, IEnumerable silos) + public IEnumerable Filter(PlacementFilterStrategy filterStrategy, PlacementTarget target, IEnumerable silos) { var dict = GrainPlacementFilterTests.FilterScratchpad; - var list = dict.GetValueOrAddNew(context.GrainType.ToString()); + var list = dict.GetValueOrAddNew(target.GrainIdentity.Type.ToString()); list.Add("B"); return silos; } @@ -259,4 +258,4 @@ public class TestDuplicateOrderFilteredGrain : Grain, ITestDuplicateOrderFiltere public interface ITestDuplicateOrderFilteredGrain : IGrainWithIntegerKey { Task Ping(); -} \ No newline at end of file +}