Skip to content
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

Adding a retry for storage list_blobs(). #2252

Merged

Conversation

dhermes
Copy link
Contributor

@dhermes dhermes commented Sep 6, 2016

The storage API is not guaranteed to be strongly consistent, so we retry to allow for eventual consistency.

Came up in https://travis-ci.org/GoogleCloudPlatform/gcloud-python/builds/157997410

@dhermes dhermes added api: storage Issues related to the Cloud Storage API. testing flaky labels Sep 6, 2016
@googlebot googlebot added the cla: yes This human has signed the Contributor License Agreement. label Sep 6, 2016
@tseaver
Copy link
Contributor

tseaver commented Sep 6, 2016

LGTM

@dhermes
Copy link
Contributor Author

dhermes commented Sep 6, 2016

I'm going to hold off merging this until #2223 is in.

@dhermes dhermes added the do not merge Indicates a pull request not ready for merge, due to either quality or timing. label Sep 6, 2016
The storage API is not guaranteed to be strongly
consistent, so we retry to allow for eventual
consistency.
@dhermes dhermes force-pushed the storage-eventual-consistency-list branch from 4e8c9cc to fe2b6db Compare September 7, 2016 17:39
@dhermes dhermes removed the do not merge Indicates a pull request not ready for merge, due to either quality or timing. label Sep 7, 2016
@dhermes dhermes merged commit 570cf29 into googleapis:master Sep 7, 2016
@dhermes dhermes deleted the storage-eventual-consistency-list branch September 7, 2016 22:29
dhermes added a commit to dhermes/google-cloud-python that referenced this pull request Sep 9, 2016
This is not just "taking the easy way out", it's really
the most appropriate fix since there are so many
assertions that can fail due to eventual consistency. (For
example, asking for 2 blobs should have a next page when 3
are in the bucket, but this may break down due to eventual
consistency.)

Fixes googleapis#2217.

Also

- restoring test_second_level() to pre-googleapis#2252 (by retrying
  the entire test case)
- restoring test_list_files() to pre-googleapis#2181 (by retrying
  the entire test case)
- adding retries around remaining test cases that call
  list_blobs(): test_root_level_w_delimiter(),
  test_first_level() and test_third_level()
- adding a helper to empty a bucket in setUpClass() helper
  (which also uses list_blobs()) in both TestStoragePseudoHierarchy
  and TestStorageListFiles
dhermes added a commit to dhermes/google-cloud-python that referenced this pull request Sep 9, 2016
This is not just "taking the easy way out", it's really
the most appropriate fix since there are so many
assertions that can fail due to eventual consistency. (For
example, asking for 2 blobs should have a next page when 3
are in the bucket, but this may break down due to eventual
consistency.)

Fixes googleapis#2217.

Also

- restoring test_second_level() to pre-googleapis#2252 (by retrying
  the entire test case)
- restoring test_list_files() to pre-googleapis#2181 (by retrying
  the entire test case)
- adding retries around remaining test cases that call
  list_blobs(): test_root_level_w_delimiter(),
  test_first_level() and test_third_level()
- adding a helper to empty a bucket in setUpClass() helper
  (which also uses list_blobs()) in both TestStoragePseudoHierarchy
  and TestStorageListFiles
@dhermes dhermes mentioned this pull request Sep 19, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: storage Issues related to the Cloud Storage API. cla: yes This human has signed the Contributor License Agreement. testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants