Summary: | error log messages: apr_global_mutex_lock(rewrite_log_lock) failed | ||
---|---|---|---|
Product: | Apache httpd-2 | Reporter: | Roland Friedwagner <roland.friedwagner> |
Component: | mod_rewrite | Assignee: | Apache HTTPD Bugs Mailing List <bugs> |
Status: | RESOLVED FIXED | ||
Severity: | minor | CC: | roland.friedwagner |
Priority: | P3 | Keywords: | FixedInTrunk |
Version: | 2.2.11 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Attachments: | Remove global mod_rewrite log lock |
Description
Roland Friedwagner
2009-03-31 04:27:03 UTC
I think I've figured out what's going on (with some help from Greg Ames). Not sure yet how to fix it. The global mutex used by mod_rewrite to serialize writing to the rewrite log is created in post_config(). So when the parent starts its graceful restart and cleans up the old configuration, it's going to clean up - destroy - that global mutex. Children still finishing up requests now have a reference to a mutex that no longer exists, hence attempts to lock the mutex fail. I think the worst effect of this is the possibility that a few rewritelog messages get intermingled in the log, which isn't too important. Still, it would be nice to figure out a way to make this work right. Maybe somebody who knows how modules work better than I knows how to do this. Ah, this was reported directly to us too - I took a look, and I can't see what the point of the logging serialisation is at all: http://marc.info/?l=apache-httpd-dev&m=124282193217344&w=2 Created attachment 23792 [details]
Remove global mod_rewrite log lock
I like it! The Gordian knot solution.
Here's a patch against trunk to remove the lock.
|