rebuild filescanner to use threads instead of tasks for the periodic scan, change alternative file upload to be a munged file upload
This commit is contained in:
@@ -145,10 +145,7 @@ public sealed class FileUploadManager : DisposableMediatorSubscriberBase
|
||||
|
||||
try
|
||||
{
|
||||
if (!_mareConfigService.Current.UseAlternativeFileUpload)
|
||||
await UploadFileStream(compressedFile, fileHash, uploadToken).ConfigureAwait(false);
|
||||
else
|
||||
await UploadFileFull(compressedFile, fileHash, uploadToken).ConfigureAwait(false);
|
||||
await UploadFileStream(compressedFile, fileHash, _mareConfigService.Current.UseAlternativeFileUpload, uploadToken).ConfigureAwait(false);
|
||||
_verifiedUploadedHashes[fileHash] = DateTime.UtcNow;
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -156,7 +153,7 @@ public sealed class FileUploadManager : DisposableMediatorSubscriberBase
|
||||
if (!_mareConfigService.Current.UseAlternativeFileUpload && ex is not OperationCanceledException)
|
||||
{
|
||||
Logger.LogWarning(ex, "[{hash}] Error during file upload, trying alternative file upload", fileHash);
|
||||
await UploadFileFull(compressedFile, fileHash, uploadToken).ConfigureAwait(false);
|
||||
await UploadFileStream(compressedFile, fileHash, true, uploadToken).ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -165,18 +162,13 @@ public sealed class FileUploadManager : DisposableMediatorSubscriberBase
|
||||
}
|
||||
}
|
||||
|
||||
private async Task UploadFileFull(byte[] compressedFile, string fileHash, CancellationToken uploadToken)
|
||||
private async Task UploadFileStream(byte[] compressedFile, string fileHash, bool munged, CancellationToken uploadToken)
|
||||
{
|
||||
using var content = new ByteArrayContent(compressedFile);
|
||||
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
|
||||
if (munged)
|
||||
{
|
||||
FileDownloadManager.MungeBuffer(compressedFile.AsSpan());
|
||||
}
|
||||
|
||||
var response = await _orchestrator.SendRequestAsync(HttpMethod.Post, MareFiles.ServerFilesUploadFullPath(_orchestrator.FilesCdnUri!, fileHash), content, uploadToken).ConfigureAwait(false);
|
||||
Logger.LogDebug("[{hash}] Upload Status: {status}", fileHash, response.StatusCode);
|
||||
CurrentUploads.Single(f => string.Equals(f.Hash, fileHash, StringComparison.Ordinal)).Transferred = compressedFile.Length;
|
||||
}
|
||||
|
||||
private async Task UploadFileStream(byte[] compressedFile, string fileHash, CancellationToken uploadToken)
|
||||
{
|
||||
using var ms = new MemoryStream(compressedFile);
|
||||
|
||||
Progress<UploadProgress> prog = new((prog) =>
|
||||
@@ -192,8 +184,11 @@ public sealed class FileUploadManager : DisposableMediatorSubscriberBase
|
||||
});
|
||||
var streamContent = new ProgressableStreamContent(ms, prog);
|
||||
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
|
||||
|
||||
var response = await _orchestrator.SendRequestStreamAsync(HttpMethod.Post, MareFiles.ServerFilesUploadFullPath(_orchestrator.FilesCdnUri!, fileHash), streamContent, uploadToken).ConfigureAwait(false);
|
||||
HttpResponseMessage response;
|
||||
if (!munged)
|
||||
response = await _orchestrator.SendRequestStreamAsync(HttpMethod.Post, MareFiles.ServerFilesUploadFullPath(_orchestrator.FilesCdnUri!, fileHash), streamContent, uploadToken).ConfigureAwait(false);
|
||||
else
|
||||
response = await _orchestrator.SendRequestStreamAsync(HttpMethod.Post, MareFiles.ServerFilesUploadMunged(_orchestrator.FilesCdnUri!, fileHash), streamContent, uploadToken).ConfigureAwait(false);
|
||||
Logger.LogDebug("[{hash}] Upload Status: {status}", fileHash, response.StatusCode);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user