• Stan Hu's avatar
    Return 413 HTTP status for S3 uploads if max upload limit is reached · 9d08495c
    Stan Hu authored
    When an upload (e.g. a CI artifact) reaches the maximum file size limit,
    uploads via S3 would return a 500 error to the user. This made it
    difficult to understand why the upload failed.
    
    This was happening because the `hardLimitReader` was aborting the
    transfer with `ErrEntityTooLarge`, but this error was wrapped in layers
    of AWS errors. Since none of these AWS errors were understood by the
    file handler, a 500 error was returned.
    
    To fix this, AWS has a way to retrieve the original error. We now
    recursively go down the error stack to find the root cause.
    
    Note that there is an open issue in the AWS SDK to make this easier with
    Golang (https://github.com/aws/aws-sdk-go/issues/2820).
    9d08495c
s3_object.go 2.78 KB