While I still don't have some of the features that are going to be required to make a final release of 3.0, enough bugs have been fixed since 3.0a1 to warrant another alpha ( download, info ). Thanks to Mike Naberezny, Drew Perttula, and Calvin Hendryx-Parker for supplying bug reports and fixes:
3.0a2
- Fixed the README.txt example for defining the supervisor RPC
interface in the configuration file. Thanks to Drew Perttula.
- Fixed a bug where process communication events would not have the
proper payload if the payload data was very short.
- when supervisord attempted to kill a process with SIGKILL after
the process was not killed within "stopwaitsecs" using a "normal"
kill signal, supervisord would crash with an improper
AssertionError. Thanks to Calvin Hendryx-Parker.
- On Linux, Supervisor would consume too much CPU in an effective
"busywait" between the time a subprocess exited and the time at
which supervisor was notified of its exit status. Thanks to Drew
Perttula.
- RPC interface behavior change: if the RPC method
"sendProcessStdin" is called against a process that has closed its
stdin file descriptor (e.g. it has done the equivalent of
"sys.stdin.close(); os.close(0)"), we return a NO_FILE fault
instead of accepting the data.
- Changed the semantics of the process configuration 'autorestart'
parameter with respect to processes which move between the RUNNING
and EXITED state. 'autorestart' was previously a boolean. Now
it's a trinary, accepting one of 'false', 'unexpected', or 'true'.
If it's 'false', a process will never be automatically restarted
from the EXITED state. If it's 'unexpected', a process that
enters the EXITED state will be automatically restarted if it
exited with an exit code that was not named in the process
config's 'exitcodes' list. If it's 'true', a process that enters
the EXITED state will be automatically restarted unconditionally.
The default is now 'unexpected' (it was previously 'true'). The
readdition of this feature is a reversion of the behavior change
note in the changelog notes for 3.0a1 that asserted we never cared
about the process' exit status when determining whether to restart
it or not.
- setup.py develop (and presumably setup.py install) would fail
under Python 2.3.3, because setuptools attempted to import
'splituser' from urllib2, and it didn't exist.
- It's now possible to use 'setup.py install' and 'setup.py develop'
on systems which do not have a C compiler if you set the
environment variable "NO_MELD3_EXTENSION_MODULES=1" in the shell
in which you invoke these commands (versions of meld3 > 0.6.1
respect this envvar and do not try to compile optional C
extensions when it's set).
- The test suite would fail on Python versions <= 2.3.3 because
the "assertTrue" and "assertFalse" methods of unittest.TestCase
didn't exist in those versions.
- The 'supervisorctl' and 'supervisord' wrapper scripts were disused
in favor of using setuptools' 'console_scripts' entry point settings.
- Documentation files and the sample configuration file are put into
the generated supervisor egg's 'doc' directory.
_ Using the web interface would cause fairly dramatic memory
leakage. We now require a version of meld3 that does not appear
to leak memory from its C extensions (0.6.3).
This change log snippet seems to contain a combination of supervisor and meld3 entries...