TUS upload fails, 416 error

We’re trying to upload a large file (100 GB) to a TUS server but the upload fails even though the setup is working smoothly for smaller files (<5 GB).

The setup has a tusd server hosted on Openshift with amazon S3 storage. The .NET Tus client is used to upload.

The last 5 MB PATCH request results in an error:
[tusd] 2022/12/06 20:45:53 event=“ResponseOutgoing” status=“500” method=“PATCH” path=“76e8b0545684700078d92b5b1d69eef7+2~ps8anp8X534gBKPtVCld4YRU3h6NZSk” error=“InvalidRange:
status code: 416, request id: tx000000000000004353a66-00638faa01-1322af0-dcr1, host id: " requestId=”"

The tus client reports an error but then on resuming gives success:
System.Exception: Upload error: InternalServerError | Reason: Internal Server Error
at Tus.Net.Client.TusFile.UploadAsync(Int32 chunkSize, Dictionary`2 customHttpHeaders, TusOptions tusOptions)
Failed to finish Upload
Upload in progress: 100 %
Upload 100% Complete

At the S3 the upload is never completed though, the upload is visible in S3 browser under Uncompleted Multipart uploads but is not avaible in the bucket. The Tusd server never sends the expected ‘post-finish’ hook.

Can anyone help why this 416 out of range error happens? It only seems to happen for large uploads (> 50 GB). There does not seem to be some sort of resource limit on the S3 we’re hitting.

Hi, tusd is our most battle-tested solution so I’m thinking this is actually a problem with tus-dotnet-client, which is a community project and not something we maintain. This likely has to do with the client not creating chunks correctly or mismatching the offset.

To add what Merlijn already said: Likely there is no bug inside tusd, but I could also imagine an incompatibility between Openshift and the AWS S3 API. Maybe they do not implement every API call exactly as AWS does.