summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs/glusterd/bug-1420637-volume-sync-fix.t40
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c12
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 e7ae9b7848d..46d932bbc2e 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -4331,15 +4331,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;
@@ -4984,6 +4977,7 @@ glusterd_restart_bricks (glusterd_conf_t *conf)
}
}
}
+ ret = 0;
out:
conf->restart_done = _gf_true;