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)
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()) {