diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/FileCleanupService.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/FileCleanupService.cs index 8ef26ba..8fc0401 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/FileCleanupService.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/FileCleanupService.cs @@ -22,7 +22,7 @@ public class FileCleanupService : IHostedService _logger = logger; _services = services; _configuration = configuration.GetRequiredSection("MareSynchronos"); - _isMainServer = string.IsNullOrEmpty(_configuration.GetValue("RemoteCacheSource", string.Empty)); + _isMainServer = string.IsNullOrEmpty(_configuration.GetValue("RemoteCacheSourceUri", string.Empty)); _cacheDir = _configuration.GetValue("CacheDirectory"); } @@ -164,7 +164,7 @@ public class FileCleanupService : IHostedService _metrics.DecGauge(MetricsAPI.GaugeFilesTotalSize, file.Length); _metrics.DecGauge(MetricsAPI.GaugeFilesTotal); file.Delete(); - _logger.LogInformation("File not in DB, deleting: {fileName}", file.FullName); + _logger.LogInformation("File not in DB, deleting: {fileName}", file.Name); } ct.ThrowIfCancellationRequested(); diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/GrpcFileService.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/GrpcFileService.cs index 9c5babd..3f95816 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/GrpcFileService.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/GrpcFileService.cs @@ -28,26 +28,42 @@ public class GrpcFileService : FileService.FileServiceBase var filePath = FilePathUtil.GetFilePath(_basePath, uploadMsg.Hash); using var fileWriter = File.OpenWrite(filePath); var file = await _mareDbContext.Files.SingleOrDefaultAsync(f => f.Hash == uploadMsg.Hash && f.UploaderUID == uploadMsg.Uploader).ConfigureAwait(false); - if (file != null) + try { - await fileWriter.WriteAsync(uploadMsg.FileData.ToArray()).ConfigureAwait(false); - while (await requestStream.MoveNext().ConfigureAwait(false)) + if (file != null) { - await fileWriter.WriteAsync(requestStream.Current.FileData.ToArray()).ConfigureAwait(false); + await fileWriter.WriteAsync(uploadMsg.FileData.ToArray()).ConfigureAwait(false); + + while (await requestStream.MoveNext().ConfigureAwait(false)) + { + await fileWriter.WriteAsync(requestStream.Current.FileData.ToArray()).ConfigureAwait(false); + } + + await fileWriter.FlushAsync().ConfigureAwait(false); + fileWriter.Close(); + + var fileSize = new FileInfo(filePath).Length; + file.Uploaded = true; + + await _mareDbContext.SaveChangesAsync().ConfigureAwait(false); + + _metricsClient.IncGauge(MetricsAPI.GaugeFilesTotal, 1); + _metricsClient.IncGauge(MetricsAPI.GaugeFilesTotalSize, fileSize); + + _logger.LogInformation("User {user} uploaded file {hash}", uploadMsg.Uploader, uploadMsg.Hash); + } + } + catch (Exception ex) + { + _logger.LogWarning(ex, "Error during UploadFile"); + var fileNew = await _mareDbContext.Files.SingleOrDefaultAsync(f => f.Hash == uploadMsg.Hash && f.UploaderUID == uploadMsg.Uploader).ConfigureAwait(false); + if (fileNew != null) + { + _mareDbContext.Files.Remove(fileNew); } - await fileWriter.FlushAsync().ConfigureAwait(false); - fileWriter.Close(); - - var fileSize = new FileInfo(filePath).Length; - file.Uploaded = true; - - _metricsClient.IncGauge(MetricsAPI.GaugeFilesTotal, 1); - _metricsClient.IncGauge(MetricsAPI.GaugeFilesTotalSize, fileSize); - await _mareDbContext.SaveChangesAsync().ConfigureAwait(false); - _logger.LogInformation("User {user} uploaded file {hash}", uploadMsg.Uploader, uploadMsg.Hash); } return new Empty();