New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rgw: complete versioning enablement after sending it to meta master #12444

Merged
merged 1 commit into from Jan 26, 2017

Conversation

Projects
None yet
4 participants
@oritwas
Contributor

oritwas commented Dec 12, 2016

Fixes: http://tracker.ceph.com/issues/18003
Signed-off-by: Orit Wasserman owasserm@redhat.com

@oritwas oritwas requested a review from cbodley Dec 12, 2016

@oritwas oritwas changed the title from rgw: complete versioning enablment after sending it to meta master to rgw: complete versioning enablement after sending it to meta master Dec 12, 2016

@cbodley

This comment has been minimized.

Contributor

cbodley commented Dec 12, 2016

added a test case for this to test_multi.py and verified this fix 👍

there is some potential for races between the secondary zone's call to put_bucket_instance_info() and its sync from the master

consider a racing put_acls operation on the same bucket instance that happens on the master zone, which results in master mdlog entries [set_bucket_versioning, put_acls]. if the secondary zone processes the meta sync for both of these entries before calling put_bucket_instance_info(), it would overwrite the put_acls

on the other hand, say the put_acls operation happens first and the master mdlog looked like [put_acls, set_bucket_versioning]. if the secondary zone calls put_bucket_instance_info() first, then the metadata synced from the master would appear to go back in time for the put_acls until it caught back up to the set_bucket_versioning

addressing these races is probably not in scope for this bug fix, but we should think about how to handle it for all of the bucket requests that we forward

@idealguo

This comment has been minimized.

idealguo commented Dec 13, 2016

I have one question: if meta_master returns success and local zone(zone group) is failed for some reason. RGW will return failed to user, but the versioning state has been updated in meta_master, it is inconsistency for user.

@oritwas

This comment has been minimized.

Contributor

oritwas commented Dec 13, 2016

It should be a temporary situation until the sync process run than the state will be consist again

@idealguo

This comment has been minimized.

idealguo commented Dec 13, 2016

Thanks, if user got failed, and then he can find the new versioning state by API after sync process run. This may be unreasonable

@yehudasa yehudasa added the needs-qa label Dec 22, 2016

@oritwas

This comment has been minimized.

Contributor

oritwas commented Jan 3, 2017

@oritwas

This comment has been minimized.

Contributor

oritwas commented Jan 8, 2017

@yehudasa , can we merge this?

@yehudasa yehudasa merged commit 10a7ff0 into ceph:master Jan 26, 2017

3 checks passed

Signed-off-by all commits in this PR are signed
Details
Unmodifed Submodules submodules for project are unmodified
Details
default Build finished.
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment