[openstack-dev] [swift] what does swift do if the auditor find that all 3 replicas are corrupt?
sam at swiftstack.com
Wed Nov 6 18:30:44 UTC 2013
On 11/6/13 7:12 AM, Daniel Li wrote:
> 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
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