Skip to content

Commit a63e738

Browse files
fix cleanup
1 parent 594efda commit a63e738

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

PoolManager.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,20 +161,24 @@ private async Task CleanupDatabase()
161161

162162
var cutoffTime = DateTime.UtcNow - TimeSpan.FromDays(30);
163163

164-
// Remove old runners
165-
var oldRunners = await db.Runners
166-
.Where(r => r.CreatedTime < cutoffTime)
164+
// Remove old runners - find runners where their earliest lifecycle event is older than 30 days
165+
var oldRunnerIds = await db.RunnerLifecycles
166+
.GroupBy(rl => rl.RunnerId)
167+
.Select(g => new { RunnerId = g.Key, OldestEvent = g.Min(rl => rl.EventTimeUtc) })
168+
.Where(r => r.OldestEvent < cutoffTime)
169+
.Select(r => r.RunnerId)
167170
.ToListAsync();
168171

169-
if (oldRunners.Count > 0)
172+
if (oldRunnerIds.Count > 0)
170173
{
174+
var oldRunners = await db.Runners.Where(r => oldRunnerIds.Contains(r.RunnerId)).ToListAsync();
171175
_logger.LogInformation($"Removing {oldRunners.Count} runners older than 30 days from database");
172176
db.Runners.RemoveRange(oldRunners);
173177
}
174178

175-
// Remove old jobs
179+
// Remove old jobs - only remove completed jobs older than 30 days
176180
var oldJobs = await db.Jobs
177-
.Where(j => j.CompleteTime < cutoffTime)
181+
.Where(j => j.CompleteTime < cutoffTime && j.CompleteTime != DateTime.MinValue)
178182
.ToListAsync();
179183

180184
if (oldJobs.Count > 0)

0 commit comments

Comments
 (0)