]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: split-brain issues should be clearly visible in mirror status
authorMykola Golub <mgolub@mirantis.com>
Tue, 29 Nov 2016 09:40:14 +0000 (11:40 +0200)
committerNathan Cutler <ncutler@suse.com>
Sun, 29 Jan 2017 20:37:20 +0000 (21:37 +0100)
Fixed: http://tracker.ceph.com/issues/16991
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
(cherry picked from commit cccca67d5f898c43207a19a6e029a1abb86efbcb)

qa/workunits/rbd/rbd_mirror.sh
src/tools/rbd_mirror/ImageReplayer.cc

index 396600baa6fbec6ee52a2012193c4d57bfcc257f..983d25775f58b9cabd4b45938b491aa7b6052976 100755 (executable)
@@ -343,4 +343,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
index f83eafb7c2a3c3afe865b2461b6d9d8cd62e7300..eaa40928ad66121213b3b2c9596d4de8fda779d6 100644 (file)
@@ -428,6 +428,9 @@ void ImageReplayer<I>::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;