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 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;  | 
