コード例 #1
0
        private async Task AllClean(ProbeDbContext dbContext, IStorageProvider storageProvider)
        {
            var files = await dbContext.Files.ToListAsync();

            foreach (var file in files)
            {
                if (!storageProvider.ExistInHardware(file.HardwareId))
                {
                    _logger.LogWarning($"Cleaner message: File with Id: {file.HardwareId} was found in database but not found on disk! Deleting record in database...");
                    // delete file in db.
                    dbContext.Files.Remove(file);
                }
            }
            await dbContext.SaveChangesAsync();

            var storageFiles = storageProvider.GetAllFileNamesInHardware();

            foreach (var file in storageFiles)
            {
                if (files.All(t => t.HardwareId != file))
                {
                    _logger.LogWarning($"Cleaner message: File with hardware Id: {file} was found on disk but not found in database! Consider Delete that file on disk!");
                    // delete file in disk
                    storageProvider.DeleteToTrash(file);
                }
            }
        }
コード例 #2
0
        public async Task DeleteFile(File file)
        {
            _dbContext.Files.Remove(file);
            var haveDaemon = await _dbContext.Files.Where(f => f.Id != file.Id).AnyAsync(f => f.HardwareId == file.HardwareId);

            if (!haveDaemon)
            {
                _storageProvider.DeleteToTrash(file.HardwareId);
            }
        }
コード例 #3
0
        public async Task DeleteOnDisk(File file)
        {
            try
            {
                var haveDaemon = await _probeDbContext.Files.Where(f => f.Id != file.Id).AnyAsync(f => f.HardwareId == file.HardwareId);

                if (!haveDaemon)
                {
                    await _retryEngine.RunWithTry(taskFactory : _ =>
                    {
                        _storageProvider.DeleteToTrash(file.HardwareId);
                        return(Task.FromResult(0));
                    }, attempts : 10);
                }
            }
            catch (Exception e)
            {
                var token = await _appsContainer.AccessToken();

                await _eventService.LogExceptionAsync(token, e, "Deleter");
            }
        }