From e95dcdc3193cd33d98349d92218e438e5e37cebc Mon Sep 17 00:00:00 2001 From: Sachin Pandit Date: Wed, 4 Jun 2014 10:30:59 +0530 Subject: 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 Reviewed-on: http://review.gluster.org/7970 Tested-by: Gluster Build System Reviewed-by: Rajesh Joseph Reviewed-by: Raghavendra Bhat Reviewed-by: Krishnan Parthasarathi Reviewed-by: Kaushal M --- tests/bugs/bug-1104642.t | 46 ++++++++++++++++++++++++++++++ xlators/mgmt/glusterd/src/glusterd-utils.c | 10 +++++-- 2 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 tests/bugs/bug-1104642.t 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; -- cgit