Actions
Bug #21285
openrgw infinite loop in RGWBucketShardIncrementalSyncCR::operate
% Done:
0%
Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
rgw
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
while (!marker_tracker->can_do_op(key)) {
if (!updated_status) {
set_status() << "can't do op, conflicting inflight operation";
updated_status = true;
}
ldout(sync_env->cct, 5) << *this << ": [inc sync] can't do op on key=" << key << " need to wait for conflicting operation to complete" << dendl;
yield wait_for_child();
bool again = true;
while (again) {
again = collect(&ret, lease_stack);
if (ret < 0) {
ldout(sync_env->cct, 0) << "ERROR: a child operation returned error (ret=" << ret << ")" << dendl;
sync_status = ret;
/* we have reported this error */
}
}
}
the previous batch's RGWBucketSyncSingleEntryCR with the same key is done with error,but we do not find the error because it is in spawn_window.
so the key left in marker_tracker->key_to_marker.
the loop will never break.
Updated by rui xie over 6 years ago
RGWBucketIncSyncShardMarkerTrack'members no lock protect
Updated by rui xie over 6 years ago
no matter with spawn windows, if previous failed,and left key in marker_tracker. it also happens
Updated by rui xie over 6 years ago
rui xie wrote:
RGWBucketIncSyncShardMarkerTrack'members no lock protect
no need, run in cr stack,only one cr runs at once.
Actions