Bug #64450
closedrgw: bucket listing failed to make forward progress w/ versioned objects
0%
Description
When listing the objects in a bucket while ordered (RGWRados::Bucket::List::list_objects_ordered), there is a marker comparison in order to determine if progress is being made. For a versioned object with a large amount of versions, this marker comparison could be incorrect. The comparison looks at object name (which will be the same for versioned object), and then the instance version from a lexicographical order, which is how the underlying OMAP is ordered. However, the index key structure is `<obj name>\0[v<ver>\0i<instance id>]` so the different versions are ordered by <ver> rather than instance id in the OMAP. In the following example: prev_marker = file1[\0]1[\0]i*cde*, cur_marker = file1[\0]2[\0]i*abc*, the marker comparison would fail even though we made forward progress. Due to how this behavior affects the listing logic, some objects end up being omitted during bucket listing.
Updated by Casey Bodley about 1 month ago
- Is duplicate of Bug #64185: timeouts when listing versioned buckets that skip over many entries added