]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: apply_olh_log ignores RGW_ATTR_OLH_VER decode error
authorCasey Bodley <cbodley@redhat.com>
Mon, 2 Dec 2019 21:59:05 +0000 (16:59 -0500)
committerNathan Cutler <ncutler@suse.com>
Tue, 21 Jan 2020 22:13:15 +0000 (23:13 +0100)
this resolves test failures that return 400 Bad Request after:

  apply_olh_log failed to decode olh ver ''

because olh_init_modification_impl() is writing an empty attribute:

  bufferlist verbl;
  op.setxattr(RGW_ATTR_OLH_VER, verbl);

on such decode errors, link_epoch will be set to 0, and will correctly
be overwritten by real epochs from the olh log

Fixes: https://tracker.ceph.com/issues/39142
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 36c54a601c62894d0dccec49322cf7ea6bbb7d02)

src/rgw/rgw_rados.cc

index be37116c32f66f27b1dc89e7846f8a6e25567d1d..d48f59321e6bc4ee52f623038c572bf064191e8f 100644 (file)
@@ -7493,10 +7493,6 @@ int RGWRados::apply_olh_log(RGWObjectCtx& obj_ctx, RGWObjState& state, const RGW
     std::string str = olh_ver->second.to_str();
     std::string err;
     link_epoch = strict_strtoll(str.c_str(), 10, &err);
-    if (!err.empty()) {
-      ldout(cct, 0) << "apply_olh_log failed to decode olh ver '" << str << "'" << dendl;
-      return -EINVAL;
-    }
   }
   auto olh_info = state.attrset.find(RGW_ATTR_OLH_INFO);
   if (olh_info != state.attrset.end()) {