Skip to content
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

mimic: rgw: multisite: overwrites in versioning-suspended buckets fail to sync #29017

Merged
merged 6 commits into from Jul 24, 2019

Conversation

@smithfarm
Copy link
Contributor

smithfarm commented Jul 12, 2019

@smithfarm smithfarm self-assigned this Jul 12, 2019
@smithfarm smithfarm added this to the mimic milestone Jul 12, 2019
@smithfarm smithfarm added bug fix core rgw and removed core labels Jul 12, 2019
@smithfarm smithfarm requested a review from cbodley Jul 12, 2019
@cbodley

This comment has been minimized.

Copy link
Contributor

cbodley commented Jul 12, 2019

jenkins test make check

@smithfarm

This comment has been minimized.

Copy link
Contributor Author

smithfarm commented Jul 22, 2019

jenkins test make check (logs are gone again)

@smithfarm

This comment has been minimized.

Copy link
Contributor Author

smithfarm commented Jul 22, 2019

jenkins test make check

@smithfarm

This comment has been minimized.

Copy link
Contributor Author

smithfarm commented Jul 22, 2019

The FTBFS is:

/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc: In member function 'int RGWRados::repair_olh(RGWObjState*, const RGWBucketInfo&, const rgw_obj&)':
/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc:11484:18: error: 'rgw_bl_str' was not declared in this scope
   if (olh.tag == rgw_bl_str(state->olh_tag)) { // mismatch already resolved?
                  ^~~~~~~~~~
/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc:11484:18: note: suggested alternative: 'rgw_user'
   if (olh.tag == rgw_bl_str(state->olh_tag)) { // mismatch already resolved?
                  ^~~~~~~~~~
                  rgw_user
/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc:11516:29: error: 'struct rgw_rados_ref' has no member named 'obj'
   r = ref.ioctx.operate(ref.obj.oid, &op);
                             ^~~
/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc: In member function 'int RGWRados::bi_get_olh(const RGWBucketInfo&, const rgw_obj&, rgw_bucket_olh_entry*)':
/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc:13079:29: error: 'using bufferlist = class ceph::buffer::list {aka class ceph::buffer::list}' has no member named 'cbegin'; did you mean 'begin'?
   auto iter = bi_entry.data.cbegin();
                             ^~~~~~
                             begin
src/rgw/CMakeFiles/rgw_a.dir/build.make:1434: recipe for target 'src/rgw/CMakeFiles/rgw_a.dir/rgw_rados.cc.o' failed
make[3]: *** [src/rgw/CMakeFiles/rgw_a.dir/rgw_rados.cc.o] Error 1
make[3]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:22508: recipe for target 'src/rgw/CMakeFiles/rgw_a.dir/all' failed
make[2]: *** [src/rgw/CMakeFiles/rgw_a.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
ldout(cct, 0) << "repair_olh failed to read olh entry for " << obj << dendl;
return r;
}
if (olh.tag == rgw_bl_str(state->olh_tag)) { // mismatch already resolved?

This comment has been minimized.

Copy link
@smithfarm

smithfarm Jul 22, 2019

Author Contributor

@cbodley The FTBFS is emanating from this line - namely, rgw_bl_str is not defined.

To me, that indicates I need to either (a) cherry-pick dcb5e06 or (b) replace rgw_bl_str(state->olh_tag) with state->olh_tag.to_str() or (state->olh_tag).to_str() (?)

I'm leaning towards (b), but not sure of the correct syntax and anyway would appreciate your thoughts before I pick at it further.

This comment has been minimized.

Copy link
@smithfarm

smithfarm Jul 22, 2019

Author Contributor

. . . taking a stab at cherry-picking dcb5e06 - just for kicks, as an experiment (FAILED)

This comment has been minimized.

Copy link
@smithfarm

smithfarm Jul 22, 2019

Author Contributor

. . . and I now see that you went with state->olh_tag.to_str() in the luminous backport #26191

cbodley added 4 commits Jan 2, 2019
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 81fa354)

Conflicts:
	src/test/rgw/rgw_multi/tests.py
each zone manages its own olh log, so we don't want any of the source
zone's olh attributes. in one case (sync of an object overwrite in a
versioning-suspended bucket), these olh attributes were being written
directly to the head object and leading to link_olh errors due to the
olh_tag mismatch

Fixes: http://tracker.ceph.com/issues/37792

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit a4195fc)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit c6c445f)
and calls the bucket_info overload of BucketShard::init() to avoid
reading the bucket info again

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit a15e873)
@smithfarm smithfarm force-pushed the smithfarm:wip-38080-mimic branch 2 times, most recently from 1e97bb4 to 4805f30 Jul 22, 2019
@smithfarm

This comment has been minimized.

Copy link
Contributor Author

smithfarm commented Jul 22, 2019

/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc: In member function 'int RGWRados::repair_olh(RGWObjState*, const RGWBucketInfo&, const rgw_obj&)':
/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc:11516:29: error: 'struct rgw_rados_ref' has no member named 'obj'
   r = ref.ioctx.operate(ref.obj.oid, &op);
                             ^~~
/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc: In member function 'int RGWRados::bi_get_olh(const RGWBucketInfo&, const rgw_obj&, rgw_bucket_olh_entry*)':
/home/jenkins-build/build/workspace/ceph-pull-requests/src/rgw/rgw_rados.cc:13079:29: error: 'using bufferlist = class ceph::buffer::list' {aka 'class ceph::buffer::list'} has no member named 'cbegin'; did you mean 'begin'?
   auto iter = bi_entry.data.cbegin();
                             ^~~~~~
                             begin
src/rgw/CMakeFiles/rgw_a.dir/build.make:1434: recipe for target 'src/rgw/CMakeFiles/rgw_a.dir/rgw_rados.cc.o' failed
make[3]: *** [src/rgw/CMakeFiles/rgw_a.dir/rgw_rados.cc.o] Error 1
@smithfarm

This comment has been minimized.

Copy link
Contributor Author

smithfarm commented Jul 22, 2019

Note: the backport of dcb5e06 is smithfarm@1e97bb4 - since it failed in the exact same way as shown in the previous comment, I guess it's still a viable option.

cbodley added 2 commits Jan 25, 2019
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit b8d7f0a)

Conflicts:
    src/rgw/rgw_rados.cc
- bufferlist::cbegin()
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 1309e2d)

Conflicts:
    src/rgw/rgw_rados.cc
- no rgw_bl_str() in mimic
- mimic does not have a4d3977
@smithfarm smithfarm force-pushed the smithfarm:wip-38080-mimic branch from 4805f30 to dea4c1e Jul 22, 2019
@yuriw

This comment has been minimized.

Copy link
Contributor

yuriw commented Jul 23, 2019

@yuriw yuriw merged commit f671c3e into ceph:mimic Jul 24, 2019
4 checks passed
4 checks passed
Docs: build check OK - docs built
Details
Signed-off-by all commits in this PR are signed
Details
Unmodified Submodules submodules for project are unmodified
Details
make check make check succeeded
Details
@smithfarm smithfarm deleted the smithfarm:wip-38080-mimic branch Jul 25, 2019
@smithfarm smithfarm changed the title mimic: multisite: overwrites in versioning-suspended buckets fail to sync mimic: rgw: multisite: overwrites in versioning-suspended buckets fail to sync Aug 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.