diff options
author | Atin Mukherjee <amukherj@redhat.com> | 2014-10-15 12:56:48 +0530 |
---|---|---|
committer | Kaushal M <kaushal@redhat.com> | 2014-10-28 23:58:34 -0700 |
commit | 8df26e838c40f15bb2b26131d1533da339f5be3e (patch) | |
tree | 8cedea9c45b23e31e79ed1d3e503abebca3648f1 /xlators/mgmt/glusterd/src/glusterd-utils.h | |
parent | 27628b7b0950a673cfb5584c76d25c183f5be02f (diff) |
glusterd: op state machine shouldn't use global peer list
Problem : op state machine was relying on the global peer list while sending
lock/stage/unlock commit rpc requests to the peers in the cluster. Trusting on
global peer list structure is dangerous as this structure gets modified if any
peer modification command is attempted in the cluster when there is a ongoing
transaction going through the state machine. An ideal usecase of this problem
when rebalance is in progress and peer probe is executed rebalance op-sm and
peer probe may run into race making peerinfo structure go for toss.
Solution: Use local copy of peer list (xaction_peers) in glusterd op-sm.
Change-Id: I1ff7118dc6a9a72633e2e87b7ab7bae1796595e0
BUG: 1152890
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-on: http://review.gluster.org/8932
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.h')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index 605d7e05124..f1a8469700c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -915,4 +915,7 @@ glusterd_check_client_op_version_support (char *volname, uint32_t op_version, gf_boolean_t glusterd_have_peers (); + +void +glusterd_op_clear_xaction_peers (); #endif |