-
Notifications
You must be signed in to change notification settings - Fork 593
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lingering buckets #968
Comments
I believe it's because the Cloud Storage API is eventually consistent. |
Related: #965 (comment) |
@dhermes would you mind elaborating on that? |
Let's say objects If you delete If you wait long enough (i.e. eventually, i.e. eventual consistency), you'll get the "correct" answer, which is just |
Gotcha, that would explain it. How long does it generally take for everything to become eventually consistent? I've run into a couple of scenarios where I wasn't able to delete buckets for several days. |
I'm not a GCS expert, just observing things we've run into with Several days is way outside the scope of what I was talking about. I meant on the order of seconds. |
If something goes wrong during our system tests, we might end up with lingering buckets or files. But when we attempt to delete them, it's not always immediate (like during the same process that our tests run in); it's being denied from the Dev Console UI. The only way I've found around it is with I'm unsure how the CLI tool makes a request that the API honors that I can't replicate as a user in the Dev Console or a service account with our client library. It would be great to get some insight from the Storage team. // @jgeewax |
Quoting from the docs:
In gcloud-java integration tests we put bucket delete inside a loop that first lists and deletes files then tries to delete bucket, if that fails we loop again. We set a timeout to end the loop so this is not guaranteed to work 100% but should reduce the amount of errors. |
Thanks for that! I stumbled on that blurb while researching this issue and put it into effect just a couple minutes ago. |
/cc @rdayal. Apparently gsutil can do things that the UI can't? That's weird, right? |
Here is a recreation of the failed delete process through the UI: And the bucket's metadata: {
kind: 'storage#bucket',
id: 'gcloud-test-bucket-temp-02b799c0-9303-11e5-ae1a-fdbce319d2fc',
selfLink: 'https://www.googleapis.com/storage/v1/b/gcloud-test-bucket-temp-02b799c0-9303-11e5-ae1a-fdbce319d2fc',
projectNumber: '1046198160504',
name: 'gcloud-test-bucket-temp-02b799c0-9303-11e5-ae1a-fdbce319d2fc',
timeCreated: '2015-11-24T23:35:49.288Z',
updated: '2015-11-24T23:35:49.288Z',
metageneration: '1',
owner: { entity: 'project-owners-1046198160504' },
location: 'US',
versioning: { enabled: true },
storageClass: 'STANDARD',
etag: 'CAE='
} |
@rdayal is there more data we can provide that would make this easier to test? Have you heard of this before? |
/cc @Capstan : Nathan -- any idea what's going on here ? Seems that the gsutil tool can do some things the UI won't do ? |
@jgeewax Yes. Eventual consistency will cause issues like this, there exist long tail issues with index consistency that we are actively pursuing. That said, it shouldn't be forever. Are you also deleting all the archived objects in this versioned bucket? |
And, no, apparently the storage browser doesn't handle versioned objects. :( |
Thanks for taking a look! Hidden versioned objects never even occurred to me, that makes a lot of sense. I've put together a PR to delete all of the past versions of a files from each bucket we create before attempting to delete the bucket: #1147 |
* fix(deps): update dependency protobufjs to v7 * fix(deps): do not depend on protobufjs Co-authored-by: Alexander Fenster <[email protected]>
* chore(main): release 5.1.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * docs: explain that v2 is not enabled yet Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Alexander Fenster <[email protected]>
* chore(main): release 5.1.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * docs: explain that v2 is not enabled yet Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Alexander Fenster <[email protected]>
Occasionally I'll create a bucket for testing purposes and when I go to delete it, I'll get an error stating that the bucket can't be deleted because it contains files, if I attempt to list the files within it there aren't any. I've also seen this occur without modifying any of the ACLs.
I'm pretty sure this is an upstream error, however I'm opening this issue to verify that it isn't our client and to also raise visibility on this issue.
The text was updated successfully, but these errors were encountered: