path: root/rpc
diff options
authorMohit Agrawal <>2018-11-23 09:39:43 +0530
committerAmar Tumballi <>2018-12-13 04:46:50 +0000
commitfb917bf10b4783d5c669e81a5be1f902ca48cb84 (patch)
tree81a61c54de77f598c1c23648d5e38a3f0fff54aa /rpc
parent52d3f82db2f032eae1b60ffa2f283109858ce3df (diff)
[geo-rep]: Worker still ACTIVE after killing bricks
Problem: In changelog xlator after destroying listener it call's unlink to delete changelog socket file but socket file reference is not cleaned up from process memory Solution: 1) To cleanup reference completely from process memory serialize transport cleanup for changelog and then unlink socket file 2) Brick xlator will notify GF_EVENT_PARENT_DOWN to next xlator only after cleanup all xprts Test: To test the same run below steps 1) Setup some volume and enable brick mux 2) kill anyone brick with gf_attach 3) check changelog socket for specific to killed brick in lsof, it should cleanup completely fixes: bz#1600145 Change-Id: Iba06cbf77d8a87b34a60fce50f6d8c0d427fa491 Signed-off-by: Mohit Agrawal <>
Diffstat (limited to 'rpc')
1 files changed, 6 insertions, 0 deletions
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
index 38e52081b3c..b3f90079c3c 100644
--- a/rpc/rpc-transport/socket/src/socket.c
+++ b/rpc/rpc-transport/socket/src/socket.c
@@ -3009,6 +3009,12 @@ socket_server_event_handler(int fd, int idx, int gen, void *data, int poll_in,
* thread context while we are using it here.
priv->idx = idx;
+ priv->gen = gen;
+ if (poll_err) {
+ socket_event_poll_err(this, gen, idx);
+ goto out;
+ }
if (poll_in) {
int aflags = 0;