azureblob: wait for up to 60s to create a just deleted container

When a container is deleted, a container with the same name cannot be
created for at least 30 seconds; the container may not be available
for more than 30 seconds if the service is still processing the
request.

We sleep so that we wait at most 60 seconds.  This is mostly useful in
the integration tests where containers get deleted and remade
immediately.
This commit is contained in:
Nick Craig-Wood 2018-11-24 10:53:44 +00:00
parent 5fe3b0ad71
commit 8b8220c4f7

View File

@ -706,6 +706,11 @@ func (f *Fs) Mkdir(dir string) error {
f.containerOK = true f.containerOK = true
return false, nil return false, nil
case azblob.ServiceCodeContainerBeingDeleted: case azblob.ServiceCodeContainerBeingDeleted:
// From https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container
// When a container is deleted, a container with the same name cannot be created
// for at least 30 seconds; the container may not be available for more than 30
// seconds if the service is still processing the request.
time.Sleep(6 * time.Second) // default 10 retries will be 60 seconds
f.containerDeleted = true f.containerDeleted = true
return true, err return true, err
} }