[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