Skip to content

Commit 493f3b1

Browse files
CopilotrkargMsft
andcommitted
Align all membership providers: ZooKeeper and Cosmos cleanup non-Active stale entries
- CosmosMembershipTable: remove all non-Active stale entries (was only Dead), using proper Math.Max(IAmAliveTime, StartTime) timestamp check - ZooKeeperBasedMembershipTable: implement CleanupDefunctSiloEntries (was NotImplementedException) to delete non-Active stale entries Co-authored-by: rkargMsft <164392675+rkargMsft@users.noreply.github.com> Agent-Logs-Url: https://github.com/dotnet/orleans/sessions/cfa9474b-c8f1-4707-b13e-8ac1054679e7
1 parent 3d056d3 commit 493f3b1

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

src/Azure/Orleans.Clustering.Cosmos/Membership/CosmosMembershipTable.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,10 @@ public async Task CleanupDefunctSiloEntries(DateTimeOffset beforeDate)
103103
{
104104
try
105105
{
106-
var silos = (await ReadSilos(SiloStatus.Dead).ConfigureAwait(false)).Where(s => s.IAmAliveTime < beforeDate).ToList();
106+
var silos = (await ReadSilos().ConfigureAwait(false))
107+
.Where(s => (SiloStatus)s.Status != SiloStatus.Active
108+
&& new DateTime(Math.Max(s.IAmAliveTime.Ticks, s.StartTime.Ticks), DateTimeKind.Utc) < beforeDate)
109+
.ToList();
107110
if (silos.Count == 0)
108111
{
109112
return;

src/Orleans.Clustering.ZooKeeper/ZooKeeperBasedMembershipTable.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,23 @@ private static T Deserialize<T>(byte[] data)
335335

336336
public Task CleanupDefunctSiloEntries(DateTimeOffset beforeDate)
337337
{
338-
throw new NotImplementedException();
338+
return UsingZookeeper(async zk =>
339+
{
340+
var childrenResult = await zk.getChildrenAsync("/");
341+
var rows = await Task.WhenAll(
342+
childrenResult.Children.Select(child => GetRow(zk, SiloAddress.FromParsableString(child))));
343+
344+
foreach (var (entry, _) in rows)
345+
{
346+
if (entry.Status != SiloStatus.Active
347+
&& new DateTime(Math.Max(entry.IAmAliveTime.Ticks, entry.StartTime.Ticks), DateTimeKind.Utc) < beforeDate)
348+
{
349+
await ZKUtil.deleteRecursiveAsync(zk, ConvertToRowPath(entry.SiloAddress));
350+
}
351+
}
352+
353+
return true;
354+
}, this.deploymentConnectionString, this.watcher);
339355
}
340356

341357
[LoggerMessage(

0 commit comments

Comments
 (0)