object-updater should remember redirects and proactively check whether an update should be pointing at a shard instead

Bug #1878090 reported by Tim Burke
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Object Storage (swift)
Confirmed
Undecided
Unassigned

Bug Description

One of the troubles you get with a large container is that async pendings start piling up pointing at it because the container can't keep up. Once you shard it, the container server will issue redirects to appropriate shards, but it can still only send so many at a time.

Instead of making two requests for every async pending (one to get the redirect, one to update the shard instead), the updater should get the whole set of shards loaded into its head after the first redirect, and use that information to avoid further requests to the root.

Revision history for this message
clayg (clay-gerrard) wrote :

Is there any rule that says the container server can't return the shards list as part of the 301?

Should there be any limit on how many shards and how long the updater can cache these?

Changed in swift:
status: New → Confirmed
Revision history for this message
Tim Burke (1-tim-z) wrote :

We absolutely could include the shards in the 301 -- that's the way to do it. There probably should be a (likely configurable) limit; ten containers' worth of shard ranges might be a reasonable default? Any time limit can likely be pretty long -- as long as it's within a reclaim age, the shard will redirect if it needed to shrink or shard.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.