diff options
| author | Atin Mukherjee <amukherj@redhat.com> | 2016-03-20 18:31:00 +0530 | 
|---|---|---|
| committer | Jeff Darcy <jdarcy@redhat.com> | 2016-03-23 07:50:23 -0700 | 
| commit | 8f5323882d90e3dd4ab855c79737e6d2302fc739 (patch) | |
| tree | 805b0d0b9471639eb034b6c5e2b06c58ed3706bf /xlators | |
| parent | cf91abba2e6bf22794b04d143f226906e44bf5d5 (diff) | |
glusterd/rpc : Discard duplicate Disconnect events
Backport of http://review.gluster.org/#/c/13790/
If a peer rpc disconnect event has been already processed, skip the furthers as
processing them are overheads and sometimes may lead to a crash like due to a
double free
Change-Id: Iec589ce85daf28fd5b267cb6fc82a4238e0e8adc
BUG: 1320374
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-on: http://review.gluster.org/13790
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-on: http://review.gluster.org/13813
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 410dd4478ca..e2bf485e4e2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -5182,6 +5182,12 @@ __glusterd_peer_rpc_notify (struct rpc_clnt *rpc, void *mydata,          case RPC_CLNT_DISCONNECT:          { +                /* If DISCONNECT event is already processed, skip the further +                 * ones +                 */ +                if (is_rpc_clnt_disconnected (&rpc->conn)) +                        break; +                  rpc_clnt_unset_connected (&rpc->conn);                  gf_msg (this->name, GF_LOG_INFO, 0,                          GD_MSG_PEER_DISCONNECTED,  | 
