diff options
-rw-r--r-- | tests/bugs/glusterd/bug-1420637-volume-sync-fix.t | 40 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 12 |
2 files changed, 43 insertions, 9 deletions
diff --git a/tests/bugs/glusterd/bug-1420637-volume-sync-fix.t b/tests/bugs/glusterd/bug-1420637-volume-sync-fix.t new file mode 100644 index 00000000000..0bd9988f6be --- /dev/null +++ b/tests/bugs/glusterd/bug-1420637-volume-sync-fix.t @@ -0,0 +1,40 @@ +#!/bin/bash + +# Test case for checking when server-quorum-ratio value is changed on one +# glusterd where the other is down, the other changes done get synced back +properly when the glusterd is brought up. + +. $(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 & start the volume +TEST $CLI_1 volume create $V0 $H1:$B1/${V0}0 $H2:$B2/${V0}1 + +# Start the volume +TEST $CLI_1 volume start $V0 +TEST $CLI_1 volume set $V0 performance.readdir-ahead on + +# Bring down 2nd glusterd +TEST kill_glusterd 2 + +TEST $CLI_1 volume set all cluster.server-quorum-ratio 60 +TEST $CLI_1 volume set $V0 performance.readdir-ahead off + +# Bring back 2nd glusterd +TEST $glusterd_2 + +# After 2nd glusterd come back, there will be 2 nodes in a clusater +EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count; + +EXPECT_WITHIN $PROBE_TIMEOUT "60" volinfo_field_2 all cluster.server-quorum-ratio +EXPECT_WITHIN $PROBE_TIMEOUT "off" volinfo_field_2 $V0 performance.readdir-ahead + +cleanup; diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index c7ea074e5f8..f9deeeed019 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -4384,15 +4384,8 @@ glusterd_import_global_opts (dict_t *friend_data) * recompute if quorum is met. If quorum is not met bricks are * not started and those already running are stopped */ - if (old_quorum != new_quorum) { - ret = glusterd_restart_bricks (conf); - if (ret) { - gf_msg ("glusterd", GF_LOG_INFO, 0, - GD_MSG_SERVER_QUORUM_NOT_MET, - "Restarting bricks failed"); - goto out; - } - } + if (old_quorum != new_quorum) + glusterd_restart_bricks (conf); } ret = 0; @@ -5456,6 +5449,7 @@ glusterd_restart_bricks (glusterd_conf_t *conf) } } } + ret = 0; out: conf->restart_done = _gf_true; |