On 06/25/2008 02:55 PM, Nick Kew wrote:
On Wed, 2008-06-25 at 12:43, Nick Kew wrote:
On Wed, 25 Jun 2008 10:32:58 +0200
Jimi Hullegård <[EMAIL PROTECTED]> wrote:
Hi,
After we upgraded APR from 1.2.8 to 1.3.0 we get a strange error in
tomcat's catalina.out that we have never seen before:
Jun 24, 2008 11:42:09 AM
org.apache.tomcat.util.net.AprEndpoint$Poller run SEVERE: Critical
poller failure (restarting poller): [62] Timer expired
Could this be related to
http://marc.info/?l=apr-dev&m=121347872322492&w=2
I had something similar with httpd+Event MPM on solaris.
Current workaround is to use Worker MPM.
OK, I've just tested APR variants with Event MPM.
It is indeed that fix that breaks it. When I revert
the fix, the problem goes away.
The original patch posted to fix the same bug works fine.
Can I suggest you apply the following patch to 1.3.x
(should work on 1.3.0 or 1.3.2 too) and let us know if
it fixes the problem you're seeing?
Index: poll/unix/port.c
===================================================================
--- poll/unix/port.c (revision 662044)
+++ poll/unix/port.c (working copy)
@@ -315,7 +315,15 @@
if (ret == -1) {
(*num) = 0;
- rv = apr_get_netos_error();
+ if (errno == EINTR) {
+ rv = APR_EINTR;
+ }
+ else if (errno == ETIME) {
+ rv = APR_TIMEUP;
+ }
+ else {
+ rv = APR_EGENERAL;
+ }
}
else if (nget == 0) {
rv = APR_TIMEUP;
Looks good and makes sense.
apr_get_netos_error() in case of ETIME = 720062
APR_TIMEUP = 70007
So they are different.
But I would do
rv = apr_get_netos_error();
instead
of
rv = APR_EGENERAL;
Regards
Rüdiger