From de12933ee3d49c5cb95572374a1ead904bfc8614 Mon Sep 17 00:00:00 2001 From: Enkidu93 Date: Thu, 2 Nov 2023 10:58:40 -0400 Subject: [PATCH] Only upload when count is greater than 0 --- .../Services/S3WriteStream.cs | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/src/SIL.Machine.AspNetCore/Services/S3WriteStream.cs b/src/SIL.Machine.AspNetCore/Services/S3WriteStream.cs index d5ea2a38d..35329ffc0 100644 --- a/src/SIL.Machine.AspNetCore/Services/S3WriteStream.cs +++ b/src/SIL.Machine.AspNetCore/Services/S3WriteStream.cs @@ -55,37 +55,40 @@ public override void Flush() { } public override async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) { - try + if (count > 0) { - using MemoryStream ms = new(buffer, offset, count); - int partNumber = _uploadResponses.Count + 1; - UploadPartRequest request = - new() - { - BucketName = _bucketName, - Key = _key, - UploadId = _uploadId, - PartNumber = partNumber, - InputStream = ms, - PartSize = MaxPartSize - }; - request.StreamTransferProgress += new EventHandler( - (_, e) => - { - _logger.LogDebug($"Transferred {e.TransferredBytes}/{e.TotalBytes}"); - } - ); - UploadPartResponse response = await _client.UploadPartAsync(request); - if (response.HttpStatusCode != HttpStatusCode.OK) - throw new HttpRequestException( - $"Tried to upload part {partNumber} of upload {_uploadId} to {_bucketName}/{_key} but received response code {response.HttpStatusCode}" + try + { + using MemoryStream ms = new(buffer, offset, count); + int partNumber = _uploadResponses.Count + 1; + UploadPartRequest request = + new() + { + BucketName = _bucketName, + Key = _key, + UploadId = _uploadId, + PartNumber = partNumber, + InputStream = ms, + PartSize = MaxPartSize + }; + request.StreamTransferProgress += new EventHandler( + (_, e) => + { + _logger.LogDebug($"Transferred {e.TransferredBytes}/{e.TotalBytes}"); + } ); - _uploadResponses.Add(response); - } - catch (Exception e) - { - await AbortAsync(e); - throw; + UploadPartResponse response = await _client.UploadPartAsync(request); + if (response.HttpStatusCode != HttpStatusCode.OK) + throw new HttpRequestException( + $"Tried to upload part {partNumber} of upload {_uploadId} to {_bucketName}/{_key} but received response code {response.HttpStatusCode}" + ); + _uploadResponses.Add(response); + } + catch (Exception e) + { + await AbortAsync(e); + throw; + } } }