swift/swift/common
Alistair Coles e69b3c60fe Avoid loops when gathering container listings from shards
Previously the proxy container controller could, in corner cases, get
into a loop while building a listing for a sharded container. For
example, if a root has a single shard then the proxy will be
redirected to that shard, but if that shard has shrunk into the root
then it will redirect the proxy back to the root, and so on until the
root is updated with the shard's shrunken status.

There is already a guard to prevent the proxy fetching shard ranges
again from the same container that it is *currently* querying for
listing parts. That deals with the case when a container fills in gaps
in its listing shard ranges with a reference to itself. This patch
extends that guard to prevent the proxy fetching shard ranges again
from any container that has previously been queried for listing parts.

Cherry-Picked-From: I7dc793f0ec65236c1278fd93d6b1f17c2db98d7b
Change-Id: I6cff16a00e48c4d069000dd54c6f4cb9f02f773d
2021-02-23 21:00:52 -06:00
..
middleware Memcached client TLS support 2021-01-07 22:05:42 +01:00
ring Update hacking for Python3 2020-04-03 21:21:07 +02:00
__init__.py Start using Hacking 2013-07-15 11:41:58 +02:00
base_storage_server.py Make log format for requests configurable 2019-05-02 17:43:25 -06:00
bufferedhttp.py py3: stop barfing on message/rfc822 Content-Types 2020-03-26 12:55:54 -07:00
constraints.py Deprecate per-service auto_create_account_prefix 2020-01-05 09:53:30 -06:00
container_sync_realms.py Python3: Fix test/unit/common/test_container_sync_realms.py 2019-01-29 09:04:36 -06:00
daemon.py Optimize obj replicator/reconstructor healthchecks 2020-04-01 08:03:32 -04:00
db.py Breakup reclaim into batches 2020-07-17 22:17:20 +00:00
db_replicator.py Fix the duplicated words issue like "the the " 2020-01-06 10:34:42 +08:00
direct_client.py Add normalize_etag() helper function 2019-12-14 01:53:43 +00:00
exceptions.py Fix socket leak on object-server death 2019-01-31 18:38:35 +00:00
header_key_dict.py py3: Fix s3api header casing 2019-11-20 12:14:35 -08:00
http.py s3api: Better handle 498/429 responses 2019-12-05 09:42:33 -08:00
internal_client.py Update hacking for Python3 2020-04-03 21:21:07 +02:00
linkat.py pep8: Turn on E305 2020-04-03 21:22:38 +02:00
manager.py Update hacking for Python3 2020-04-03 21:21:07 +02:00
memcached.py Memcached client TLS support 2021-01-07 22:05:42 +01:00
request_helpers.py Apply limit to list versioned containers 2020-03-03 11:27:21 -08:00
splice.py pep8: Turn on E305 2020-04-03 21:22:38 +02:00
storage_policy.py Update hacking for Python3 2020-04-03 21:21:07 +02:00
swob.py New Object Versioning mode 2020-01-24 17:39:56 -08:00
utils.py Populate shrinking shards with shard ranges learnt from root 2021-02-23 20:47:35 -06:00
wsgi.py Avoid loops when gathering container listings from shards 2021-02-23 21:00:52 -06:00