InternalClient can not delete dark data in deleted non-legacy containers

Bug #1670565 reported by clayg
6
This bug affects 1 person
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):

https://github.com/openstack/swift/blob/cf1c44dff0706ec4fa491aa7d3d956d3795ae675/swift/proxy/controllers/obj.py#L712

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.

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

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/

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.