diff --git a/pkg/objects/file.go b/pkg/objects/file.go index 2d099d06..e985e482 100644 --- a/pkg/objects/file.go +++ b/pkg/objects/file.go @@ -157,6 +157,14 @@ func (f File) uploadNormalObject(body io.Reader, sourceState FileState, hdr swif util.Log(util.LogError, "PUT %s/%s failed: %s", containerName, objectName, err.Error()) + if serr, ok := err.(*swift.Error); ok { + //upload failed due to rate limit, object is definitely not uploaded + //prevent additional rate limit caused by an unnecessary delete request + if serr.StatusCode == 498 { + return false + } + } + //delete potentially incomplete upload err = f.Job.Target.Connection.ObjectDelete(containerName, objectName) if err != nil {