Thanks to the time Chris Calloway and friends gave me at the recent Plone BBQ (aka "Camp Five") sprint, I've been able to release a new version of the process controller "supervisor2".
Between the band listening and pig pickin I was able to release a new version
of the supervisor2 program. This 2.1 release is a bugfix release, and fixes several important
problems. Here's the changelist:
- When supervisord was invoked more than once, and its configuration
was set up to use a UNIX domain socket as the HTTP server, the
socket file would be erased in error. The symptom of this was
that a subsequent invocation of supervisorctl could not find the
socket file, so the process could not be controlled (it and all of
its subprocesses would need to be killed by hand).
- Close subprocess file descriptors properly when a subprocess exits
or otherwise dies. This should result in fewer "too many open
files to spawn foo" messages when supervisor is left up for long
periods of time.
- When a process was not killable with a "normal" signal at shutdown
time, too many "INFO: waiting for x to die" messages would be sent
to the log until we ended up killing the process with a SIGKILL.
Now a maximum of one every three seconds is sent up until SIGKILL
time. Thanks to Ian Bicking.
- Add an assertion: we never want to try to marshal None to XML-RPC
callers. Issue 223 in the collector from vgatto indicates that
somehow a supervisor XML-RPC method is returning None (which
should never happen), but I cannot identify how. Maybe the
assertion will give us more clues if it happens again.
- Supervisor would crash when run under Python 2.5 because the
xmlrpclib.Transport class in Python 2.5 changed in a
backward-incompatible way. Thanks to Eric Westra for the bug
report and a fix.
- Tests now pass under Python 2.5.
- Better supervisorctl reporting on stop requests that have a FAILED
status.
- Removed duplicated code (readLog/readMainLog), thanks to Mike
Naberezny.
I can't thank Chris Calloway, the organizer of the sprint, enough for his generosity while we've been here at Chapel Hill. This was an amazing sprint.