Project

General

Profile

Actions

Bug #21285

open

rgw infinite loop in RGWBucketShardIncrementalSyncCR::operate

Added by rui xie over 6 years ago. Updated over 6 years ago.

Status:
New
Priority:
Normal
Assignee:
Target version:
-
% 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.

Actions #1

Updated by rui xie over 6 years ago

RGWBucketIncSyncShardMarkerTrack'members no lock protect

Actions #2

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

Actions #3

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 #4

Updated by Casey Bodley over 6 years ago

  • Assignee set to Casey Bodley
Actions

Also available in: Atom PDF