fix: Do not use unsafe work queue for auto archiving (#1116)

This commit is contained in:
Kamron Batman 2022-07-14 11:27:29 -07:00 committed by GitHub
parent a4168dc219
commit 0d19a5ff99
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 8 deletions

View file

@ -119,7 +119,8 @@ public partial class Timer
{
RefillPool(amountToRefill, out var head, out var tail);
return (head, tail);
}
},
Core.ClosingTokenSource.Token
);
ReturnToPool(amountToRefill, headTimer, tailTimer);

View file

@ -4,6 +4,7 @@ using System.Diagnostics;
using System.IO;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Toolkit.HighPerformance;
using Server.Compression;
using Server.Logging;
@ -218,7 +219,7 @@ namespace Server.Saves
}
}
public static void AutoArchiveLocally()
public static async void AutoArchiveLocally()
{
var date = Core.Now;
@ -232,22 +233,22 @@ namespace Server.Saves
return;
}
ThreadPool.UnsafeQueueUserWorkItem(
_ =>
ThreadPool.QueueUserWorkItem(
now =>
{
if (date >= _nextHourlyArchive)
if (now >= _nextHourlyArchive)
{
Rollup(ArchivePeriod.Hourly);
_nextHourlyArchive = _nextHourlyArchive.AddHours(1);
}
if (date >= _nextDailyArchive)
if (now >= _nextDailyArchive)
{
Rollup(ArchivePeriod.Daily);
_nextDailyArchive = _nextDailyArchive.AddDays(1);
}
if (date >= _nextMonthlyArchive)
if (now >= _nextMonthlyArchive)
{
Rollup(ArchivePeriod.Monthly);
_nextMonthlyArchive = _nextMonthlyArchive.AddMonths(1);
@ -256,7 +257,8 @@ namespace Server.Saves
Prune?.Invoke();
_isArchiving = 0;
},
null
date,
false
);
}