diff options
author | Samikshan Bairagya <samikshan@gmail.com> | 2017-05-30 18:09:01 +0530 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2017-06-01 10:46:38 +0000 |
commit | 6b36b162f45c4dfeb5eac21e3d77a27216e089bc (patch) | |
tree | cd8709fe6e67c108bee0ffa906a7b213a0ba8b2e | |
parent | dba55ae364a2772904bb68a6bd0ea87289ee1470 (diff) |
glusterd: Fix regression wrt add-brick on replica count change
tests/bugs/glusterd/bug-1406411-fail-add-brick-on-replica-count-change.t
was failing on centos machines with brick multiplexing enabled.
This is because detaching individual bricks manually from the
backend like it is done in the regression test framework by
'kill_brick', fails to send a RPC_CLNT_DISCONNECT to glusterd when
multiplexing is enabled. This causes the add-brick command to not
fail when one of the bricks are killed using kill_brick in the
regression test framework. To fix this, set the brick status to
GF_BRICK_STOPPED on the glusterd end during portmap signout. This
commit also sets the brick status in glusterd_brick_stop() function
so that the brick status is correctly set to 'stopped' even when the
function is called independently for individual bricks.
Change-Id: I4d6f7b579069d0cfa53cb2b0cff78876e1f31594
BUG: 1456898
Signed-off-by: Samikshan Bairagya <samikshan@gmail.com>
Reviewed-on: https://review.gluster.org/17422
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-pmap.c | 6 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-pmap.c b/xlators/mgmt/glusterd/src/glusterd-pmap.c index 2b60b17841b..292b0c38c05 100644 --- a/xlators/mgmt/glusterd/src/glusterd-pmap.c +++ b/xlators/mgmt/glusterd/src/glusterd-pmap.c @@ -564,6 +564,12 @@ __gluster_pmap_signout (rpcsvc_request_t *req) conf); sys_unlink (pidfile); brickinfo->started_here = _gf_false; + + /* Setting the brick status to GF_BRICK_STOPPED to + * ensure correct brick status is maintained on the + * glusterd end when a brick is killed from the + * backend */ + brickinfo->status = GF_BRICK_STOPPED; } } diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 0a89535211f..f8434a7bdc9 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -2137,14 +2137,16 @@ glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, ret = 0; } - if (del_brick) - glusterd_delete_brick (volinfo, brickinfo); - GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, brickinfo, conf); gf_msg_debug (this->name, 0, "Unlinking pidfile %s", pidfile); (void) sys_unlink (pidfile); brickinfo->started_here = _gf_false; + brickinfo->status = GF_BRICK_STOPPED; + + if (del_brick) + glusterd_delete_brick (volinfo, brickinfo); + out: return ret; } |