Skip to content

Commit 8fa73ab

Browse files
clean stale provisioning entries
1 parent e4c4239 commit 8fa73ab

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

Models/RunnerQueue.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,22 @@ public int CountMatchingRunners(string size, string owner, string profile)
251251
(crt, r) => r)
252252
.Count(r => r.Size == size && r.Owner == owner && r.Profile == profile);
253253
}
254+
255+
public int RemoveStale(TimeSpan maxAge)
256+
{
257+
using var context = new ActionsRunnerContext();
258+
var cutoff = DateTime.UtcNow - maxAge;
259+
var staleEntries = context.CreatedRunnersTrackings
260+
.Where(x => x.CreatedAt < cutoff)
261+
.ToList();
262+
263+
if (staleEntries.Count == 0)
264+
return 0;
265+
266+
context.CreatedRunnersTrackings.RemoveRange(staleEntries);
267+
context.SaveChanges();
268+
return staleEntries.Count;
269+
}
254270
}
255271

256272
// Wrapper for CancelledRunnersCounter to mimic ConcurrentDictionary<(string, string, string, string, string), int>

PoolManager.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
109109
await CleanUpRunners(targetConfig);
110110

111111
await StartPoolRunners(targetConfig);
112+
113+
var staleRemoved = _queues.CreatedRunners.RemoveStale(TimeSpan.FromMinutes(30));
114+
if (staleRemoved > 0)
115+
_logger.LogWarning("Removed {Count} stale entries from CreatedRunnersTracking", staleRemoved);
116+
112117
await CheckForStuckJobs(targetConfig);
113118

114119
await CleanupDatabase();

0 commit comments

Comments
 (0)