3.0a1 (2007-08-16)

  • Default config file comment documented 10 secs as default for startsecsvalue in process config, in reality it was 1 sec. Thanks to ChristophZwerschke.
  • Make note of subprocess environment behavior in README.txt.Thanks to Christoph Zwerschke.
  • New “strip_ansi” config file option attempts to strip ANSI escapesequences from logs for smaller/more readable logs (submitted byMike Naberezny).
  • The XML-RPC method supervisor.getVersion() has been renamed forclarity to supervisor.getAPIVersion(). The old name is aliasedfor compatibility but is deprecated and will be removed in afuture version (Mike Naberezny).
  • Improved web interface styling (Mike Naberezny, Derek DeVries)
  • The XML-RPC method supervisor.startProcess() now checks thatthe file exists and is executable (Mike Naberezny).
  • Two environment variables, “SUPERVISOR_PROCESS_NAME” and“SUPERVISOR_PROCESS_GROUP” are set in the environment of childprocesses, representing the name of the process and group insupervisor’s configuration.
  • Process state map change: a process may now move directly from theSTARTING state to the STOPPING state (as a result of a stoprequest).
  • Behavior change: if autorestart is true, even if a process exits withan “expected” exit code, it will still be restarted. In the immediatelyprior release of supervisor, this was true anyway, and no one complained,so we’re going to consider that the “officially correct” behavior from nowon.
  • Supervisor now logs subprocess stdout and stderr independently.The old program config keys “logfile”, “logfile_backups” and“logfile_maxbytes” are superseded by “stdout_logfile”,“stdout_logfile_backups”, and “stdout_logfile_maxbytes”. Addedkeys include “stderr_logfile”, “stderr_logfile_backups”, and“stderr_logfile_maxbytes”. An additional “redirect_stderr” key isused to cause program stderr output to be sent to its stdoutchannel. The keys “log_stderr” and “log_stdout” have beenremoved.
  • [program:x] config file sections now represent “homgeneous processgroups” instead of single processes. A “numprocs” key in the sectionrepresents the number of processes that are in the group. A “process_name”key in the section allows composition of the each process’ name within thehomogeneous group.
  • A new kind of config file section, [group:x] now exists, allowing usersto group heterogeneous processes together into a process group that can becontrolled as a unit from a client.
  • Supervisord now emits “events” at certain points in its normaloperation. These events include supervisor state change events,process state change events, and “process communication events”.
  • A new kind of config file section [eventlistener:x] now exists. Eachsection represents an “event listener pool”, which is a special kind ofhomogeneous process group. Each process in the pool is meant to receivesupervisor “events” via its stdin and perform some notification (e.g. senda mail, log, make an http request, etc.)
  • Supervisord can now capture data between special tokens insubprocess stdout/stderr output and emit a “process communicationsevent” as a result.
  • Supervisor’s XML-RPC interface may be extended arbitrarily by programmers.Additional top-level namespace XML-RPC interfaces can be added using the[rpcinterface:foo] declaration in the configuration file.
  • New supervisor-namespace XML-RPC methods have been added:getAPIVersion (returns the XML-RPC API version, the older“getVersion” is now deprecated), “startProcessGroup” (starts allprocesses in a supervisor process group), “stopProcessGroup”(stops all processes in a supervisor process group), and“sendProcessStdin” (sends data to a process’ stdin filedescriptor).
  • supervisor-namespace XML-RPC methods which previously acceptedony a process name as “name” (startProcess, stopProcess,getProcessInfo, readProcessLog, tailProcessLog, andclearProcessLog) now accept a “name” which may contain both theprocess name and the process group name in the formgroupname:procname. For backwards compatibility purposes,“simple” names will also be accepted but will be expandedinternally (e.g. if “foo” is sent as a name, it will be expandedto “foo:foo”, representing the foo process within the foo processgroup).
  • 2.X versions of supervisorctl will work against supervisor 3.0servers in a degraded fashion, but 3.X versions of supervisorctlwill not work at all against supervisor 2.X servers.