Stas Bekman wrote:
t/filter/both_str_req_proxy.t 1 1 100.00% 1 t/modules/proxy.t 255 65280 1 2 200.00% 1 t/modules/reload.t 3 3 100.00% 1-3
no real time to investigate at the moment (very, very unfortunately).
I get the proxy failures too with workers 2.0.49 and 2.0.50, but very randomly. I hate randomless - impossible to debug :(
Thanks to the ever-useful t/SMOKE I know where the problem comes from. The sequence is:
t/TEST -v t/api/server_util.t t/modules/proxy.t
and the problematic line is:
Index: t/response/TestAPI/server_util.pm =================================================================== --- t/response/TestAPI/server_util.pm (revision 111162) +++ t/response/TestAPI/server_util.pm (working copy) @@ -53,7 +53,7 @@
# this will never run since it's not registered in the parent # process - $base_server_pool->cleanup_register(sub { Apache::OK }); + #$base_server_pool->cleanup_register(sub { Apache::OK });
Further reduced to
t/TEST -v t/api/server_util.t -times=3
After each request a call
$base_server_pool->cleanup_register(sub { Apache::OK });
was rendering the worker busy (which wasn't reported as busy in the scoreboard).
Luckily the proxy tests which require two workers were exposing the problem.
Without trying to figure out why this happens, I can now see that it was clearly a mistake to expose this pool. Why? Because this pool is not thread-safe (remember it's a global static variable).
So what I'm going to do is to cut off the API exposing this pool, and instead provide a function:
Apache::ServerUtil::base_server_cleanup_register(\&sub);
which will internally register in the parent pool, but will refuse to run after startup time in the threaded environment. Thus resolving the problem.
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]