InternalClient can not delete dark data in deleted non-legacy containers
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
New
|
Undecided
|
Unassigned |
Bug Description
The proxy won't issue DELETE requests to backend storage if the there is an error getting container_info (e.g. 404):
This is probably fine in general, but problematic when trying to clean up dark data in a deleted container.
It's especially annoying if the deleted container was a non-legacy storage policy (i.e. not storage policy index 0) and you have to make the delete request with InternalClient *anyway* - only to still get rejected because the container does not exist (yeah I know... that's why I told you to delete that object!)
Dark data generally happens when you re-introduce hardware that's been out of the cluster for longer than a reclaim age. It's an annoying mess to clean up. When you're already annoyed, because you have to go clean it up (e.g. lp bug #1655608) it'd be nice if InternalClient or the ObjectController didn't try so hard to stand in your way.
One side effect of this is that after the object-updater stopped counting 404 as success [1] - there's a higher risk an object DELETE to a previously deleted container will result in an unprocessable async_pending file.
1. https:/ /review. openstack. org/#/c/ 99598/