From dd8d93f24a320805f1f67760b2d3266555acf674 Mon Sep 17 00:00:00 2001 From: Samikshan Bairagya Date: Tue, 16 Aug 2016 16:46:41 +0530 Subject: glusterd: Fix volume restart issue upon glusterd restart http://review.gluster.org/#/c/14758/ introduces a check in glusterd_restart_bricks that makes sure that if server quorum is enabled and if the glusterd instance has been restarted, the bricks do not get started. This prevents bricks which have been brought down purposely, say for maintainence, from getting started upon a glusterd restart. However this change introduced regression for a situation that involves multiple volumes. The bricks from the first volume get started, but then for the subsequent volumes the bricks do not get started. This patch fixes that by setting the value of conf->restart_done to _gf_true only after bricks are started correctly for all volumes. Change-Id: I2c685b43207df2a583ca890ec54dcccf109d22c3 BUG: 1367478 Signed-off-by: Samikshan Bairagya Reviewed-on: http://review.gluster.org/15183 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Reviewed-by: Atin Mukherjee --- ...g-1345727-bricks-stop-on-no-quorum-validation.t | 2 +- ...olume-start-validation-after-glusterd-restart.t | 40 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 tests/bugs/glusterd/bug-1367478-volume-start-validation-after-glusterd-restart.t (limited to 'tests/bugs') diff --git a/tests/bugs/glusterd/bug-1345727-bricks-stop-on-no-quorum-validation.t b/tests/bugs/glusterd/bug-1345727-bricks-stop-on-no-quorum-validation.t index e5951e0a039..7f2f3cc66ca 100644 --- a/tests/bugs/glusterd/bug-1345727-bricks-stop-on-no-quorum-validation.t +++ b/tests/bugs/glusterd/bug-1345727-bricks-stop-on-no-quorum-validation.t @@ -1,6 +1,6 @@ #!/bin/bash -# Test case for quorum validation in glusterd for syncop framework +# Test case to check if bricks are down when quorum is not met . $(dirname $0)/../../include.rc . $(dirname $0)/../../volume.rc diff --git a/tests/bugs/glusterd/bug-1367478-volume-start-validation-after-glusterd-restart.t b/tests/bugs/glusterd/bug-1367478-volume-start-validation-after-glusterd-restart.t new file mode 100644 index 00000000000..4329c66474f --- /dev/null +++ b/tests/bugs/glusterd/bug-1367478-volume-start-validation-after-glusterd-restart.t @@ -0,0 +1,40 @@ +#!/bin/bash + +# Test case to check for successful startup of volume bricks on glusterd restart + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../cluster.rc + +cleanup; + +TEST launch_cluster 2 + +TEST $CLI_1 peer probe $H2; +EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count + +# Lets create the volume and set quorum type as a server +TEST $CLI_1 volume create $V0 replica 2 $H1:$B1/${V0}1 $H2:$B2/${V0}2 +TEST $CLI_1 volume create $V1 replica 2 $H1:$B1/${V1}1 $H2:$B2/${V1}2 + +# Start the volume +TEST $CLI_1 volume start $V0 +TEST $CLI_1 volume start $V1 + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V0 $H1 $B1/${V0}1 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V0 $H2 $B2/${V0}2 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V1 $H1 $B1/${V1}1 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V1 $H2 $B2/${V1}2 + +# Restart 2nd glusterd +TEST kill_glusterd 2 +TEST $glusterd_2 + +# Check if all bricks are up +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V0 $H1 $B1/${V0}1 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V0 $H2 $B2/${V0}2 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V1 $H1 $B1/${V1}1 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V1 $H2 $B2/${V1}2 + +cleanup; + -- cgit