I created issue 1133 for this (apparent) bug

http://code.google.com/p/cherokee/issues/detail?id=1133

--bob

On Feb 14, 2011, at 1:46 PM, Robert Olson wrote:

> 
> On Feb 14, 2011, at 10:21 AM, Alvaro Lopez Ortega wrote:
> 
>> Hello Robert,
>> 
>> On 14/02/2011, at 16:36, Robert Olson wrote:
>> 
>>> The problem we're seeing is that for a particular test script on the client 
>>> side, one of the exchanges is failing. 
>>> 
>>> Looking at packet traces, I see the client sending a complete request to 
>>> cherokee. Cherokee sends the request to the compute server, but it appears 
>>> to be truncating the request one packet shy of finishing it. the compute 
>>> server then reports a bad parse in response.
>>> 
>>> The problem initially showed up fairly reliably only when both front ends 
>>> were running. If I killed wackamole on one of them (pushing both IPs over 
>>> to a single server) the problem vanished. 
>> 
>> Did it perform a clean 'three way' close sequence (FIN, FIN+ACK, ACK)? The 
>> last package might be lost if a RST were sent while the connection is being 
>> closed.
> 
> Aha, I got one. Wordy trace files attached.
> 
> trace.1 was taken from the front-end machine, trace.2 is the same transaction 
> taken from the compute machine.
> 
> Here is the syscall trace from cherokee for that transaction (I've clipped 
> out the long packet content). Note the EAGAIN.
> 
> 24358 13:21:08.623134 recvfrom(17, 
> "source=ClientThing&function=fid_locations&args=---%0A-bou"..., 15237, 0, 
> NULL, NULL) = 15237
> 24358 13:21:08.623548 sendto(20, 
> "\1\5\0\1;\205\0\0source=ClientThing&fun162%0A++"..., 15253, 0, NULL, 0) = 
> 14480
> 24358 13:21:08.623990 epoll_wait(16, {{EPOLLOUT, {u32=17, u64=17}}}, 407, 
> 1000) = 1
> 24358 13:21:08.624057 sendto(20, "72%0A++-+fig%7C2098.5.peg.73", 773, 0, 
> NULL, 0) = -1 EAGAIN (Resource temporarily unavailable)
> 24358 13:21:08.624252 epoll_ctl(16, EPOLL_CTL_MOD, 17, {EPOLLIN, {u32=17, 
> u64=17}}) = 0
> 24358 13:21:08.624316 epoll_wait(16,  <unfinished ...>
> 
> No mention of file descriptors 17 or 20 until the timeout hits:
> 
> 24348 13:23:09.051488 epoll_wait(7,  <unfinished ...>
> 24358 13:23:09.616377 <... epoll_wait resumed> {}, 407, 1000) = 0
> 24358 13:23:09.616419 shutdown(17, 1 /* send */) = 0
> 24358 13:23:09.616529 epoll_wait(16, {{EPOLLIN|EPOLLHUP, {u32=17, u64=17}}}, 
> 407, 1000) = 1
> 24358 13:23:09.617106 recvfrom(17, "", 4096, 0, NULL, NULL) = 0
> 24358 13:23:09.617173 epoll_ctl(16, EPOLL_CTL_DEL, 17, {0, {u32=17, u64=17}}) 
> = 0
> 24358 13:23:09.617253 close(17)         = 0
> 24358 13:23:09.617331 close(20)         = 0
> 
> Is cherokee not picking up on the nonblocking socket properly? that system is 
> running 1.0.20.
> 
> --bob
> 
> <trace.1><trace.2>
> 
> 
> 
> _______________________________________________
> Cherokee mailing list
> [email protected]
> http://lists.octality.com/listinfo/cherokee

_______________________________________________
Cherokee mailing list
[email protected]
http://lists.octality.com/listinfo/cherokee

Reply via email to