I am awaiting a call to Amazon.S3.AmazonS3Client.UploadPartAsync but the await never resolves even though I am sure that the request has been fulfilled.
private async Task<Amazon.S3.Model.UploadPartResponse> UploadPartString(Amazon.S3.AmazonS3Client client, Amazon.S3.Model.InitiateMultipartUploadResponse initiateMultipartUploadResponse, int partNumber, string content)
{
Amazon.S3.Model.UploadPartResponse result;
var length = content.Length * sizeof(Char);
this.LambdaContext.Logger.LogLine($"Uploading to {initiateMultipartUploadResponse.BucketName}:{initiateMultipartUploadResponse.Key}[{partNumber}]({length + " bytes"})");
using (var stream = GenerateStreamFromString(content))
{
// THIS AWAIT does not resolve
result = await client.UploadPartAsync(new Amazon.S3.Model.UploadPartRequest()
{
BucketName = initiateMultipartUploadResponse.BucketName,
Key = initiateMultipartUploadResponse.Key,
PartNumber = partNumber,
UploadId = initiateMultipartUploadResponse.UploadId,
InputStream = stream,
PartSize = 5 * (long)Math.Pow(2, 20),
});
// a breakpoint here never fires
ETags.Add(new Amazon.S3.Model.PartETag(partNumber, result.ETag));
}
return result;
}
A breakpoint after the await never gets hit. I can see a list of 200 OK responses in fiddler though so the requests are working:
the calling code for this can be simplified to:
var uploadTasks = new List<Task>();
foreach(var batchString in batches)
{
uploadTasks.Add(UploadPartString(client, multipartUploadInitiateResult, partIndex, batchString));
}
Task.WaitAll(uploadTasks.ToArray());
My calling code does not ever progress past the Task.WaitAll();
I'm using
- AWSSDK.Core 3.7.0.17 (latest stable)
- AWSSDK.S3 3.7.0.18 (latest stable)