Skip to content.

plope

Personal tools
You are here: Home » Members » chrism's Home » Supervisor 3.0a2 Released
 
 

Supervisor 3.0a2 Released

Another alpha release in the 3.0 line of the supervisor UNIX process controller.

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).

Created by chrism
Last modified 2007-08-25 06:48 PM

Changelog mixup?


This change log snippet seems to contain a combination of supervisor and meld3 entries...

nope...

They're right. superivsor depends on meld3 and the supervisor package's dependent meld3 version changed, which implies some memory leak fixes in supervisor and also allows you to install supervisor without having a C compiler on the box which you're installing to.