Backend polling not working
izak at upfrontsystems.co.za
Thu Oct 15 12:29:16 CEST 2009
Apologies for the (mostly) monologue this far :-)
Izak Burger wrote:
> Alright, I have to take that back. I changed the port so varnish talks
> to apache instead and that works. That means zope somehow manages to
> cause a POLLIN event on the file descriptor even though there is nothing
> to read. Will have to do more research on this.
It appears the fault is somewhere in zope.
I ended up writing a test program to illustrate the problem. The reason
why poll() returns and yet read() has nothing to read is that poll()
always implicitly checks for the additional events POLLERR, POLLHUP and
POLLLNVAL, so simply checking that poll() returns greater than zero is
not a guarantee that there is data to be read.
In my case, poll() returns immediately because POLLHUP has occured. It
seems that zope reacts (incorrectly it would seem) on the shutdown()
call and closes down the entire connection.
I will have to take this up with zope-dev.
More information about the varnish-dev