add forceful deletion of files

This commit is contained in:
rootdarkarchon
2022-12-20 19:29:25 +01:00
parent a99b3a36b8
commit 02353d5ebe
2 changed files with 17 additions and 4 deletions

View File

@@ -108,15 +108,18 @@ public class FileCleanupService : IHostedService
{
try
{
if (!int.TryParse(_configuration["UnusedFileRetentionPeriodInDays"], CultureInfo.InvariantCulture, out int filesOlderThanDays))
{
filesOlderThanDays = 7;
}
var filesOlderThanDays = _configuration.GetValue("UnusedFileRetentionPeriodInDays", 7);
var forcedDeletionHours = _configuration.GetValue("ForcedDeletionOfFilesAfterHours", -1);
_logger.LogInformation("Cleaning up files older than {filesOlderThanDays} days", filesOlderThanDays);
if (forcedDeletionHours > 0)
{
_logger.LogInformation("Cleaning up files written to longer than {hours}h ago", forcedDeletionHours);
}
// clean up files in DB but not on disk or last access is expired
var prevTime = DateTime.Now.Subtract(TimeSpan.FromDays(filesOlderThanDays));
var prevTimeForcedDeletion = DateTime.Now.Subtract(TimeSpan.FromHours(forcedDeletionHours));
var allFiles = dbContext.Files.ToList();
foreach (var fileCache in allFiles.Where(f => f.Uploaded))
{
@@ -135,6 +138,15 @@ public class FileCleanupService : IHostedService
if (_isMainServer)
dbContext.Files.Remove(fileCache);
}
else if (file != null && forcedDeletionHours > 0 && file.LastWriteTime < prevTimeForcedDeletion)
{
_metrics.DecGauge(MetricsAPI.GaugeFilesTotalSize, file.Length);
_metrics.DecGauge(MetricsAPI.GaugeFilesTotal);
_logger.LogInformation("File forcefully deleted: {fileName}, {fileSize}MiB", file.Name, ByteSize.FromBytes(file.Length).MebiBytes);
file.Delete();
if (_isMainServer)
dbContext.Files.Remove(fileCache);
}
ct.ThrowIfCancellationRequested();
}

View File

@@ -20,6 +20,7 @@
}
},
"MareSynchronos": {
"ForcedDeletionOfFilesAfterHours": -1,
"CacheSizeHardLimitInGiB": -1,
"UnusedFileRetentionPeriodInDays": 7,
"CacheDirectory": "G:\\ServerTest",