[Gluster-devel] rpc problems when using syncops in callbacks

Krishnan Parthasarathi kparthas at redhat.com
Mon Apr 29 06:17:33 UTC 2013

Hi Fog,

RPC callbacks are executed in the epoll thread[1]. Calling 
synctask_yield causes that epoll thread to be blocked until, the 
corresponding "wake" is called. Most likely, the code calling the "wake" 
is tied to a network-event, which wouldn't be 'noticed' until the epoll 
thread is unblocked. This is a classic deadlock.

You could attach gdb to the hung process and check if synctask_yield was 
called on the epoll thread. For further analysis, you might want to 
paste the output of "thread apply all bt full" from gdb, attached to the 
hung process.

[1] - epoll thread - is a short name for the thread executing epoll (), 
'listening' for network events.


On 04/26/2013 03:10 PM, fog - wrote:
> Hello everyone,
> I am trying to use syncops in a custom translator to keep my code at 
> least borderline readable, but I am having limited success.
> Problem Symptoms:
> Using a syncop in a regular fop is fine. However, in a callback it 
> causes a 'freeze' (synctask_yield called by the SYNCOP macro doesn't 
> return).
> What seems to be the Problem:
> Looking at the traces, there is no corresponding trace from 
> rpc_clnt_reply_init on the client to the trace from 
> rpcsvc_submit_generic on the server. In other words, the rpc reply 
> gets sent but isn't correctly received. Obviously this is not really a 
> networking problem but something else... I'd guess it's a deadlock 
> somewhere on the client?
> From the point of the syncop call onwards the client doesn't 'get' any 
> rpc replies any more (the next GlusterFS Handshake sent by the client, 
> which is received by the server and replied to, leads to a 
> disconnection accordingly).
> Again: This problem is only occurring when calling a syncop from a 
> callback function inside my translator, if I call the same syncop in a 
> fop call it completes fine.
> I hope you can make sense out of the above problem description.
> Thanks for your time ~
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at nongnu.org
> https://lists.nongnu.org/mailman/listinfo/gluster-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://supercolony.gluster.org/pipermail/gluster-devel/attachments/20130429/04fbd132/attachment-0001.html>

More information about the Gluster-devel mailing list