From: Mykola Golub Date: Tue, 29 Nov 2016 09:40:14 +0000 (+0200) Subject: rbd-mirror: split-brain issues should be clearly visible in mirror status X-Git-Tag: v11.1.0~60^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cccca67d5f898c43207a19a6e029a1abb86efbcb;p=ceph.git rbd-mirror: split-brain issues should be clearly visible in mirror status Fixed: http://tracker.ceph.com/issues/16991 Signed-off-by: Mykola Golub --- diff --git a/qa/workunits/rbd/rbd_mirror.sh b/qa/workunits/rbd/rbd_mirror.sh index ee5755caac178..848687a84c96c 100755 --- a/qa/workunits/rbd/rbd_mirror.sh +++ b/qa/workunits/rbd/rbd_mirror.sh @@ -357,4 +357,16 @@ test -z "$(get_mirror_position ${CLUSTER2} ${POOL} ${image})" wait_for_image_replay_stopped ${CLUSTER1} ${POOL} ${image} wait_for_status_in_pool_dir ${CLUSTER1} ${POOL} ${image} 'up+error' 'disconnected' +testlog "TEST: split-brain" +image=split-brain +create_image ${CLUSTER2} ${POOL} ${image} +wait_for_status_in_pool_dir ${CLUSTER1} ${POOL} ${image} 'up+replaying' 'master_position' +demote_image ${CLUSTER2} ${POOL} ${image} +wait_for_status_in_pool_dir ${CLUSTER1} ${POOL} ${image} 'up+stopped' +promote_image ${CLUSTER1} ${POOL} ${image} +write_image ${CLUSTER1} ${POOL} ${image} 10 +demote_image ${CLUSTER1} ${POOL} ${image} +promote_image ${CLUSTER2} ${POOL} ${image} +wait_for_status_in_pool_dir ${CLUSTER1} ${POOL} ${image} 'up+error' 'split-brain' + echo OK diff --git a/src/tools/rbd_mirror/ImageReplayer.cc b/src/tools/rbd_mirror/ImageReplayer.cc index c8744840995b1..f6bad875fdfdb 100644 --- a/src/tools/rbd_mirror/ImageReplayer.cc +++ b/src/tools/rbd_mirror/ImageReplayer.cc @@ -429,6 +429,9 @@ void ImageReplayer::handle_bootstrap(int r) { dout(5) << "remote image is non-primary or local image is primary" << dendl; on_start_fail(0, "remote image is non-primary or local image is primary"); return; + } else if (r == -EEXIST) { + on_start_fail(r, "split-brain detected"); + return; } else if (r < 0) { on_start_fail(r, "error bootstrapping replay"); return;