[sheepdog] [PATCH 1/2] test: add a test for sockfd keepalive

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Mon Sep 3 17:52:50 CEST 2012


At Mon, 03 Sep 2012 22:41:24 +0800,
Liu Yuan wrote:
> 
> On 09/03/2012 10:07 PM, MORITA Kazutaka wrote:
> > It waits for a response from the unreachable node at poll() in
> > wait_forward_request().  I'm not sure why it returns after keepalive
> > timeout...
> 
> I met this problem too. But it is quite rare, and I think need to look at how poll
> works inside kernel to give the fix. Because I have test keepalive with poll, keepalive
> does take effect on my tests. I guess at some corner cases of poll, keepalive don't take effect.

Another approach:
 - set poll timeout, SO_SNDTIMEO, and SO_RCVTIMEO as we did before,
   but return SD_RES_NETWORK_ERROR only if epoch is incremented after
   timeout.
 - call connect/2 with nonblocking, and wait for connect completion
   with poll to avoid a connect timeout problem.

This may be easier than digging into kernel code.

Thanks,

Kazutaka



More information about the sheepdog mailing list