I figured this out. We use mod_proxy and in the case where there's a proxy error, PostReadRequestHandler is executed twice (once for the original request before proxying and once for the 50x error generated by mod_proxy). By checking $r->status, I can make sure that the code that increments in PostReadRequestHandler is only called once.
Paul On Sun, Dec 27, 2015 at 10:41 AM, Paul Silevitch <p...@silevitch.com> wrote: > Philippe, > > I think you are on to something. We use graceful-stops and we reset the > counters during a subsequent start. It looks like the counters sometimes > come out of the graceful-stop / start with an elevated number which > supports your theory. Do you recommend using a LogHandler instead of a > CleanupHandler? > > Thanks! > > Paul > > On Sat, Dec 26, 2015 at 7:33 PM, Philippe Chiasson <go...@ectoplasm.org> > wrote: > >> Could be the result of shutdown or graceful restarts. CleanupHandlers are >> synthetic to mod_perl and are not specifically supported/guaranteed by httpd >> >> See >> https://perl.apache.org/docs/2.0/user/handlers/http.html#Possible_Caveats >> >> Sent from my iPhone >> >> On Dec 26, 2015, at 14:37, Paul Silevitch <p...@silevitch.com> wrote: >> >> Hello Mod_perl-ers, >> >> I've got an app that increments a counter in redis in a >> PostReadRequestHandler and decrements it in a CleanupHandler. I'm noticing >> a small amount of cases where the counter doesn't get decremented. There >> are no segfaults but there are a small number of "Apache2::Filter >> internal flush: (-3) Unknown error 4294967293 at -e line 0" messages. >> Looking at the source code, I believe a modperl_croak is getting called in >> this case. Would this cause the CleanupHandler to not run? What exactly >> happens when modperl_croak is called? >> >> Thanks, >> >> Paul >> >> >