summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachin Pandit <spandit@redhat.com>2014-06-04 10:30:59 +0530
committerKaushal M <kaushal@redhat.com>2014-06-09 03:27:45 -0700
commite95dcdc3193cd33d98349d92218e438e5e37cebc (patch)
treea2746c7e666873c343df15bbc408af60bd6c9b4c
parent4215d071cec4fc8a62ca4fd6212d83f931838829 (diff)
mgmt/glusterd : Import the global options irrespective of change in
volume information. Problem : global options maintained by glusterd was getting synced only when there was change in volume information. Solution : Import the global option irrespective of change in volume information. Change-Id: I9e59b3cb25bdc19601a09fcf8df2e31a8481ece0 BUG: 1104642 Signed-off-by: Sachin Pandit <spandit@redhat.com> Reviewed-on: http://review.gluster.org/7970 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Rajesh Joseph <rjoseph@redhat.com> Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com> Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com> Reviewed-by: Kaushal M <kaushal@redhat.com>
-rw-r--r--tests/bugs/bug-1104642.t46
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c10
2 files changed, 53 insertions, 3 deletions
diff --git a/tests/bugs/bug-1104642.t b/tests/bugs/bug-1104642.t
new file mode 100644
index 00000000000..c5cb72794aa
--- /dev/null
+++ b/tests/bugs/bug-1104642.t
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+. $(dirname $0)/../include.rc
+. $(dirname $0)/../volume.rc
+. $(dirname $0)/../cluster.rc
+
+
+function get_value()
+{
+ local key=$1
+ local var="CLI_$2"
+
+ eval cli_index=\$$var
+
+ $cli_index volume info | grep "^$key"\
+ | sed 's/.*: //'
+}
+
+cleanup
+
+TEST launch_cluster 2
+
+TEST $CLI_1 peer probe $H2;
+EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count
+
+TEST $CLI_1 volume create $V0 $H1:$B1/${V0}0 $H2:$B2/${V0}1
+EXPECT "$V0" get_value 'Volume Name' 1
+EXPECT "Created" get_value 'Status' 1
+
+TEST $CLI_1 volume start $V0
+EXPECT "Started" get_value 'Status' 1
+
+#Bring down 2nd glusterd
+TEST kill_glusterd 2
+
+#set the volume all options from the 1st glusterd
+TEST $CLI_1 volume set all cluster.server-quorum-ratio 80
+
+#Bring back the 2nd glusterd
+TEST $glusterd_2
+
+#Verify whether the value has been synced
+EXPECT '80' get_value 'cluster.server-quorum-ratio' 1
+EXPECT '80' get_value 'cluster.server-quorum-ratio' 2
+
+cleanup;
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index 95401c1ca05..c8ea95c7719 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -5615,6 +5615,13 @@ glusterd_compare_friend_data (dict_t *peer_data, int32_t *status,
GF_ASSERT (peer_data);
GF_ASSERT (status);
+ ret = glusterd_import_global_opts (peer_data);
+ if (ret) {
+ gf_log (this->name, GF_LOG_ERROR, "Importing global "
+ "options failed");
+ goto out;
+ }
+
ret = dict_get_int32 (peer_data, "count", &count);
if (ret)
goto out;
@@ -5642,9 +5649,6 @@ glusterd_compare_friend_data (dict_t *peer_data, int32_t *status,
stale_shd = _gf_true;
if (glusterd_is_nodesvc_running ("quotad"))
stale_qd = _gf_true;
- ret = glusterd_import_global_opts (peer_data);
- if (ret)
- goto out;
ret = glusterd_import_friend_volumes (peer_data);
if (ret)
goto out;