diff options
author | Kaushal M <kaushal@redhat.com> | 2016-03-02 15:19:30 +0530 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2016-03-09 23:22:04 -0800 |
commit | ecf6243bc435a00f3dd2495524cd6e48e2d56f72 (patch) | |
tree | 59b034e9d72a927867c342e052b24376979d1dfd /tests/bugs/glusterd/1313628-import-brick-ports-always.t | |
parent | f6e5bc68d294cc67f1e7f4db043d2531d4cfec80 (diff) |
glusterd: Always copy old brick ports when importing
When an updated volinfo is imported in, the brick ports from the old
volinfo should be always copied.
Earlier, this was being done only if the old volinfo was stopped and
new volinfo was started. This could lead to brick ports chaging when the
following sequence of steps happened.
- A volume is stopped
- GlusterD is stopped on a peer
- The stopped volume is started
- The stopped GlusterD is started
This sequence would lead to bricks on the peer with re-started GlusterD
to get new ports, which could break firewall rules and could prevent
client access. This sequence could be hit when enabling management
encryption in a Gluster trusted storage pool.
Change-Id: I808ad478038d12ed2b19752511bdd7aa6f663bfc
BUG: 1313628
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.org/13578
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra Talur <rtalur@redhat.com>
Smoke: Gluster Build System <jenkins@build.gluster.com>
Tested-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Diffstat (limited to 'tests/bugs/glusterd/1313628-import-brick-ports-always.t')
-rwxr-xr-x | tests/bugs/glusterd/1313628-import-brick-ports-always.t | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/bugs/glusterd/1313628-import-brick-ports-always.t b/tests/bugs/glusterd/1313628-import-brick-ports-always.t new file mode 100755 index 00000000000..d04c4293466 --- /dev/null +++ b/tests/bugs/glusterd/1313628-import-brick-ports-always.t @@ -0,0 +1,47 @@ +#!/bin/bash +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../cluster.rc + +## Check that brick ports are always copied on import +## -------------------------------------------------- +## This test checks that the brick ports are copied on import by checking that +## they don't change when the following happens, +## - Stop a volume +## - Stop glusterd +## - Start the stopped volume +## - Start the stopped glusterd + +function get_brick_port() { + local VOL=$1 + local BRICK=$2 + $CLI2 volume status $VOL $BRICK --xml | sed -ne 's/.*<port>\([0-9]*\)<\/port>/\1/p' +} + + +cleanup + +TEST launch_cluster 2 +TEST $CLI1 peer probe $H2 +EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count + +# Create and start volume so that brick port assignment happens +TEST $CLI1 volume create $V0 $H1:$B1/$V0 $H2:$B2/$V0 +TEST $CLI1 volume start $V0 + +# Save port for 2nd brick +BPORT_ORIG=$(get_brick_port $V0 $H2:$B2/$V0) + +# Stop volume, stop 2nd glusterd, start volume, start 2nd glusterd +TEST $CLI1 volume stop $V0 +TEST kill_glusterd 2 + +TEST $CLI1 volume start $V0 +TEST start_glusterd 2 +EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count + +# Get new port and compare with old one +EXPECT_WITHIN $PROCESS_UP_TIMEOUT $BPORT_ORIG get_brick_port $V0 $H2:$B2/$V0 + +$CLI1 volume stop $V0 + +cleanup |