Comment 5 for bug 1293945

Revision history for this message
Kota Tsuyuzaki (tsuyuzaki-kota) wrote :

Do you mean PROXY SERVER returns a failure code when quorum number of container server fails at account_update? I mean container server returns HTTPNotFound only when all updates "assigned by proxy for the container" fail with 404.

Although I didn't notice is_deleted() call might return True when the db file path does not exist, I still believe swift should keep current semantics because 404 of account server means specified account HAVE BEEN DELETED. In current swift, an account server cannot know why the db file does not exist and regards it as "deleted". Even if a account server returns 201, it might be wrong because quorum of account server returns 404.

I guess, It is caused from a difference of DELETE operation semantics. If we have a permission for all operation of swift, anytime we are able to delete account but we cannot delete container when one and more objects exist in the container. i.e. object-sever expects the container server still has been existing but account server could not do so. That is why swift should deny PUT container for non-existing account. Moreover, when upper element (e.g. an account of a container, a container of an object) does not exist, swift should fail to make the specified element with 404 because swift has previous existing check in proxy server to deny such a bad request.

I don't know why object-server keep the object information whose container does not exist as async_pending even if object-updater will give up to update(and handle as succeeded) when container server fails returns 404. Anyways, we have to make the semantics to be clear if we could change the quorum of responses.