Hi Whit, On 5/13/11 10:12 AM, Whit Morriss wrote:
Maybe pluggable logging in general?
Logger instances are created by a factory called getLogger() in the supervisor.options module. We could allow another callable to be specified in supervisord.conf instead. I would be open to patches for this after the 3.0 final release.
Maybe? it is specific to the act of rotation. I don't know of another case where you would need to track open file handles for logging, but I'm really don't know.
I'd lean on only doing this with the rotating handler unless there's another case where it could provide some benefit.
I'll have to check. One of the tests was crafted specifically to illustrate the scattering inode problem and failed before patching (I wrote it first before the patch). That being said, I did quite a few contortions try to get the original github fork to be an actual official fork and something might have been lost in the process.
I would like to apply a fix for this issue for 3.0. If you have some time, it would be great if you can take another look.
In general, it sounds like we should flush the filehandle dict on configuration change to prevent this leakage. A class attribute is sort of icky, but I didn't see a sensible place to store the filehandles as part of the state of the running server.
An alternative could be a reference counter like what Roger did with the FCGI sockets. Decrement the count on each close(), remove the key from the dict if it goes to zero.
Thanks, Mike -- Mike Naberezny Maintainable Software http://maintainable.com _______________________________________________ Supervisor-users mailing list [email protected] http://lists.supervisord.org/mailman/listinfo/supervisor-users
