[openstack-dev] [swift] what does swift do if the auditor find that all 3 replicas are corrupt?

Samuel Merritt sam at swiftstack.com
Wed Nov 6 18:30:44 UTC 2013


On 11/6/13 7:12 AM, Daniel Li wrote:
> Hi,
>      I have a question about swift:  what does swift do if the auditor
> find that all 3 replicas are corrupt?
> will it notify the owner of the object(email to the account owner)?
> what will happen if the GET request to the corrupted object?
> will it return a special error telling that all the replicas are corrupted?
>   Or will it just say that the object is not exist?
>   Or it just return one of the corrupted replica?
>   Or something else?

If all 3 (or N) replicas are corrupt, then the auditors will eventually 
quarantine all of them, and subsequent GET requests will receive 404 
responses.

No notifications are sent, nor is it really feasible to start sending 
them. "The auditor" is not a single process; there is one Swift auditor 
process running on each node in a cluster. Therefore, when an object is 
quarantined, there's no way for its auditor to know if the other copies 
are okay or not.

Note that this is highly unlikely to ever happen, at least with the 
default of 3 replicas. When an auditor finds a corrupt object, it 
quarantines it (moves it to a "quarantines" directory). Then, since that 
object is missing, the replication processes will recreate the object by 
copying it from a node with a good copy. You'd need to have all replicas 
become corrupt within a very short timespan so that the replicators 
don't get a chance to replace the damaged ones.



More information about the OpenStack-dev mailing list