diff options
| author | Atin Mukherjee <amukherj@redhat.com> | 2016-10-17 16:08:41 +0530 | 
|---|---|---|
| committer | Atin Mukherjee <amukherj@redhat.com> | 2016-10-21 02:17:13 -0700 | 
| commit | 1e6db41c3a1969474ad6a6831815b0c0de378877 (patch) | |
| tree | 23e019ae26161d863553ede13160ad9d0f395ede | |
| parent | 9d6133cfb9f040d21de9d8d57c1478186dde9084 (diff) | |
glusterd: set the brickinfo->port before spawning the bricks
As of now, when glusterd spawns a brick process, post spawning, the brickinfo's
port is set. The side effect of this is it opens up an window where the
pmap_signin event can be initiated by the brick to glusterd and glusterd fails
to update signed_in flag since the brickinfo port is still 0 and the comparison
of port and brickinfo->port fails.
As a solution, set the brickinfo->port post pmap_registry_alloc and if the brick
spawn fails reset it to 0. This logic applies for rdma port too.
>Reviewed-on: http://review.gluster.org/15655
>Smoke: Gluster Build System <jenkins@build.gluster.org>
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
>Reviewed-by: Samikshan Bairagya <samikshan@gmail.com>
>Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Change-Id: I00a13d4c6d6809ebd19a972aa13e71ee5eac7e35
BUG: 1386338
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-on: http://review.gluster.org/15679
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Samikshan Bairagya <samikshan@gmail.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 0011cac0078..7fdb45a043b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -1916,6 +1916,10 @@ retry:                  runner_add_arg (&runner, "--mem-accounting");          runner_log (&runner, "", 0, "Starting GlusterFS"); + +        brickinfo->port = port; +        brickinfo->rdma_port = rdma_port; +          if (wait) {                  synclock_unlock (&priv->big_lock);                  ret = runner_run (&runner); @@ -1945,11 +1949,11 @@ retry:                  ret = runner_run_nowait (&runner);          } -        if (ret) +        if (ret) { +                brickinfo->port = 0; +                brickinfo->rdma_port = 0;                  goto out; - -        brickinfo->port = port; -        brickinfo->rdma_port = rdma_port; +        }  connect:          ret = glusterd_brick_connect (volinfo, brickinfo, socketpath);  | 
