diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-19 15:41:05 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-19 15:41:05 -0400 |
| commit | 06a7eb78ee4e8df3e312eab44adbe58995b6c289 (patch) | |
| tree | e9990227eeada66cd603af01e6744797a387e173 /MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs | |
| parent | 3037c18e3105eec1b9fd1d1a35e6c41b2c7c384a (diff) | |
delete temp files during cache deletion task
Diffstat (limited to 'MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs')
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs | 49 |
1 files changed, 41 insertions, 8 deletions
diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs index d4b6c0b9e..812269ea8 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs @@ -6,6 +6,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Model.Logging; namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks { @@ -20,13 +21,16 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks /// <value>The application paths.</value> private IApplicationPaths ApplicationPaths { get; set; } + private readonly ILogger _logger; + /// <summary> /// Initializes a new instance of the <see cref="DeleteCacheFileTask" /> class. /// </summary> /// <param name="appPaths">The app paths.</param> - public DeleteCacheFileTask(IApplicationPaths appPaths) + public DeleteCacheFileTask(IApplicationPaths appPaths, ILogger logger) { ApplicationPaths = appPaths; + _logger = logger; } /// <summary> @@ -54,12 +58,29 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks /// <returns>Task.</returns> public Task Execute(CancellationToken cancellationToken, IProgress<double> progress) { - return Task.Run(() => - { - var minDateModified = DateTime.UtcNow.AddDays(-30); + var minDateModified = DateTime.UtcNow.AddDays(-30); + try + { DeleteCacheFilesFromDirectory(cancellationToken, ApplicationPaths.CachePath, minDateModified, progress); - }); + } + catch (DirectoryNotFoundException) + { + // No biggie here. Nothing to delete + } + + progress.Report(90); + + try + { + DeleteCacheFilesFromDirectory(cancellationToken, ApplicationPaths.TempDirectory, DateTime.MaxValue, progress); + } + catch (DirectoryNotFoundException) + { + // No biggie here. Nothing to delete + } + + return Task.FromResult(true); } @@ -72,8 +93,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks /// <param name="progress">The progress.</param> private void DeleteCacheFilesFromDirectory(CancellationToken cancellationToken, string directory, DateTime minDateModified, IProgress<double> progress) { - var filesToDelete = new DirectoryInfo(directory).EnumerateFileSystemInfos("*", SearchOption.AllDirectories) - .Where(f => !f.Attributes.HasFlag(FileAttributes.Directory) && f.LastWriteTimeUtc < minDateModified) + var filesToDelete = new DirectoryInfo(directory).EnumerateFiles("*", SearchOption.AllDirectories) + .Where(f => f.LastWriteTimeUtc < minDateModified) .ToList(); var index = 0; @@ -87,7 +108,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks cancellationToken.ThrowIfCancellationRequested(); - File.Delete(file.FullName); + DeleteFile(file.FullName); index++; } @@ -95,6 +116,18 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks progress.Report(100); } + private void DeleteFile(string path) + { + try + { + File.Delete(path); + } + catch (IOException ex) + { + _logger.ErrorException("Error deleting file {0}", ex, path); + } + } + /// <summary> /// Gets the name of the task /// </summary> |
