1Metadata-Version: 2.1
2Name: supervisor
3Version: 4.2.1
4Summary: A system for controlling process state under UNIX
5Home-page: http://supervisord.org/
6Author: Chris McDonough
7Author-email: chrism@plope.com
8License: BSD-derived (http://www.repoze.org/LICENSE.txt)
9Description: Supervisor
10        ==========
11
12        Supervisor is a client/server system that allows its users to
13        control a number of processes on UNIX-like operating systems.
14
15        Supported Platforms
16        -------------------
17
18        Supervisor has been tested and is known to run on Linux (Ubuntu), Mac OS X
19        (10.4, 10.5, 10.6), and Solaris (10 for Intel) and FreeBSD 6.1.  It will
20        likely work fine on most UNIX systems.
21
22        Supervisor will not run at all under any version of Windows.
23
24        Supervisor is intended to work on Python 3 version 3.4 or later
25        and on Python 2 version 2.7.
26
27        Documentation
28        -------------
29
30        You can view the current Supervisor documentation online `in HTML format
31        <http://supervisord.org/>`_ .  This is where you should go for detailed
32        installation and configuration documentation.
33
34        Reporting Bugs and Viewing the Source Repository
35        ------------------------------------------------
36
37        Please report bugs in the `GitHub issue tracker
38        <https://github.com/Supervisor/supervisor/issues>`_.
39
40        You can view the source repository for supervisor via
41        `https://github.com/Supervisor/supervisor
42        <https://github.com/Supervisor/supervisor>`_.
43
44        Contributing
45        ------------
46
47        We'll review contributions from the community in
48        `pull requests <https://help.github.com/articles/using-pull-requests>`_
49        on GitHub.
50
51
52        4.2.1 (2020-08-20)
53        ------------------
54
55        - Fixed a bug on Python 3 where a network error could cause ``supervisord``
56          to crash with the error ``<class 'TypeError'>:can't concat str to bytes``.
57          Patch by Vinay Sajip.
58
59        - Fixed a bug where a test would fail on systems with glibc 2.3.1 because
60          the default value of SOMAXCONN changed.
61
62        4.2.0 (2020-04-30)
63        ------------------
64
65        - When ``supervisord`` is run in the foreground, a new ``--silent`` option
66          suppresses the main log from being echoed to ``stdout`` as it normally
67          would.  Patch by Trevor Foster.
68
69        - Parsing ``command=`` now supports a new expansion, ``%(numprocs)d``, that
70          expands to the value of ``numprocs=`` in the same section.  Patch by
71          Santjago Corkez.
72
73        - Web UI buttons no longer use background images.  Patch by Dmytro Karpovych.
74
75        - The Web UI now has a link to view ``tail -f stderr`` for a process in
76          addition to the existing ``tail -f stdout`` link.  Based on a
77          patch by OuroborosCoding.
78
79        - The HTTP server will now send an ``X-Accel-Buffering: no`` header in
80          logtail responses to fix Nginx proxy buffering.  Patch by Weizhao Li.
81
82        - When ``supervisord`` reaps an unknown PID, it will now log a description
83          of the ``waitpid`` status.  Patch by Andrey Zelenchuk.
84
85        - Fixed a bug introduced in 4.0.3 where ``supervisorctl tail -f foo | grep bar``
86          would fail with the error ``NoneType object has no attribute 'lower'``.  This
87          only occurred on Python 2.7 and only when piped.  Patch by Slawa Pidgorny.
88
89        4.1.0 (2019-10-19)
90        ------------------
91
92        - Fixed a bug on Python 3 only where logging to syslog did not work and
93          would log the exception ``TypeError: a bytes-like object is required, not 'str'``
94          to the main ``supervisord`` log file.  Patch by Vinay Sajip and Josh Staley.
95
96        - Fixed a Python 3.8 compatibility issue caused by the removal of
97          ``cgi.escape()``.  Patch by Mattia Procopio.
98
99        - The ``meld3`` package is no longer a dependency.  A version of ``meld3``
100          is now included within the ``supervisor`` package itself.
101
102        4.0.4 (2019-07-15)
103        ------------------
104
105        - Fixed a bug where ``supervisorctl tail <name> stdout`` would actually tail
106          ``stderr``.  Note that ``tail <name>`` without the explicit ``stdout``
107          correctly tailed ``stdout``.  The bug existed since 3.0a3 (released in
108          2007).  Patch by Arseny Hofman.
109
110        - Improved the warning message added in 4.0.3 so it is now emitted for
111          both ``tail`` and ``tail -f``.  Patch by Vinay Sajip.
112
113        - CVE-2019-12105.  Documentation addition only, no code changes.  This CVE
114          states that ``inet_http_server`` does not use authentication by default
115          (`details <https://github.com/Supervisor/supervisor/issues/1245>`_).  Note that
116          ``inet_http_server`` is not enabled by default, and is also not enabled
117          in the example configuration output by ``echo_supervisord_conf``.  The
118          behavior of the ``inet_http_server`` options have been correctly documented,
119          and have not changed, since the feature was introduced in 2006.  A new
120          `warning message <https://github.com/Supervisor/supervisor/commit/4e334d9cf2a1daff685893e35e72398437df3dcb>`_
121          was added to the documentation.
122
123        4.0.3 (2019-05-22)
124        ------------------
125
126        - Fixed an issue on Python 2 where running ``supervisorctl tail -f <name>``
127          would fail with the message
128          ``Cannot connect, error: <type 'exceptions.UnicodeEncodeError'>`` where it
129          may have worked on Supervisor 3.x.  The issue was introduced in Supervisor
130          4.0.0 due to new bytes/strings conversions necessary to add Python 3 support.
131          For ``supervisorctl`` to correctly display logs with Unicode characters, the
132          terminal encoding specified by the environment must support it.  If not, the
133          ``UnicodeEncodeError`` may still occur on either Python 2 or 3.  A new
134          warning message is now printed if a problematic terminal encoding is
135          detected.  Patch by Vinay Sajip.
136
137        4.0.2 (2019-04-17)
138        ------------------
139
140        - Fixed a bug where inline comments in the config file were not parsed
141          correctly such that the comments were included as part of the values.
142          This only occurred on Python 2, and only where the environment had an
143          extra ``configparser`` module installed.  The bug was introduced in
144          Supervisor 4.0.0 because of Python 2/3 compatibility code that expected
145          a Python 2 environment to only have a ``ConfigParser`` module.
146
147        4.0.1 (2019-04-10)
148        ------------------
149
150        - Fixed an issue on Python 3 where an ``OSError: [Errno 29] Illegal seek``
151          would occur if ``logfile`` in the ``[supervisord]`` section was set to
152          a special file like ``/dev/stdout`` that was not seekable, even if
153          ``logfile_maxbytes = 0`` was set to disable rotation.  The issue only
154          affected the main log and not child logs.  Patch by Martin Falatic.
155
156        4.0.0 (2019-04-05)
157        ------------------
158
159        - Support for Python 3 has been added.  On Python 3, Supervisor requires
160          Python 3.4 or later.  Many thanks to Vinay Sajip, Scott Maxwell, Palm Kevin,
161          Tres Seaver, Marc Abramowitz, Son Nguyen, Shane Hathaway, Evan Andrews,
162          and Ethan Hann who all made major contributions to the Python 3 porting
163          effort.  Thanks also to all contributors who submitted issue reports and
164          patches towards this effort.
165
166        - Support for Python 2.4, 2.5, and 2.6 has been dropped.  On Python 2,
167          Supervisor now requires Python 2.7.
168
169        - The ``supervisor`` package is no longer a namespace package.
170
171        - The behavior of the config file expansion ``%(here)s`` has changed.  In
172          previous versions, a bug caused ``%(here)s`` to always expand to the
173          directory of the root config file.  Now, when ``%(here)s`` is used inside
174          a file included via ``[include]``, it will expand to the directory of
175          that file.  Thanks to Alex Eftimie and Zoltan Toth-Czifra for the patches.
176
177        - The default value for the config file setting ``exitcodes=``, the expected
178          exit codes of a program, has changed.  In previous versions, it was ``0,2``.
179          This caused issues with Golang programs where ``panic()`` causes the exit
180          code to be ``2``.  The default value for ``exitcodes`` is now ``0``.
181
182        - An undocumented feature where multiple ``supervisorctl`` commands could be
183          combined on a single line separated by semicolons has been removed.
184
185        - ``supervisorctl`` will now set its exit code to a non-zero value when an
186          error condition occurs.  Previous versions did not set the exit code for
187          most error conditions so it was almost always 0.  Patch by Luke Weber.
188
189        - Added new ``stdout_syslog`` and ``stderr_syslog`` options to the config
190          file.  These are boolean options that indicate whether process output will
191          be sent to syslog.  Supervisor can now log to both files and syslog at the
192          same time.  Specifying a log filename of ``syslog`` is still supported
193          but deprecated.  Patch by Jason R. Coombs.
194
195        3.4.0 (2019-04-05)
196        ------------------
197
198        - FastCGI programs (``[fcgi-program:x]`` sections) can now be used in
199          groups (``[group:x]``).  Patch by Florian Apolloner.
200
201        - Added a new ``socket_backlog`` option to the ``[fcgi-program:x]`` section
202          to set the listen(2) socket backlog.  Patch by Nenad Merdanovic.
203
204        - Fixed a bug where ``SupervisorTransport`` (the XML-RPC transport used with
205          Unix domain sockets) did not close the connection when ``close()`` was
206          called on it.  Patch by Jérome Perrin.
207
208        - Fixed a bug where ``supervisorctl start <name>`` could hang for a long time
209          if the system clock rolled back.  Patch by Joe LeVeque.
210
211        3.3.5 (2018-12-22)
212        ------------------
213
214        - Fixed a race condition where ``supervisord`` would cancel a shutdown
215          already in progress if it received ``SIGHUP``.  Now, ``supervisord`` will
216          ignore ``SIGHUP`` if shutdown is already in progress.  Patch by Livanh.
217
218        - Fixed a bug where searching for a relative command ignored changes to
219          ``PATH`` made in ``environment=``.  Based on a patch by dongweiming.
220
221        - ``childutils.ProcessCommunicationsProtocol`` now does an explicit
222          ``flush()`` after writing to ``stdout``.
223
224        - A more descriptive error message is now emitted if a name in the config
225          file contains a disallowed character.  Patch by Rick van Hattem.
226
227        3.3.4 (2018-02-15)
228        ------------------
229
230        - Fixed a bug where rereading the configuration would not detect changes to
231          eventlisteners.  Patch by Michael Ihde.
232
233        - Fixed a bug where the warning ``Supervisord is running as root and it is
234          searching for its config file`` may have been incorrectly shown by
235          ``supervisorctl`` if its executable name was changed.
236
237        - Fixed a bug where ``supervisord`` would continue starting up if the
238          ``[supervisord]`` section of the config file specified ``user=`` but
239          ``setuid()`` to that user failed.  It will now exit immediately if it
240          cannot drop privileges.
241
242        - Fixed a bug in the web interface where redirect URLs did not have a slash
243          between the host and query string, which caused issues when proxying with
244          Nginx.  Patch by Luke Weber.
245
246        - When ``supervisord`` successfully drops privileges during startup, it is now
247          logged at the ``INFO`` level instead of ``CRIT``.
248
249        - The HTTP server now returns a Content-Type header specifying UTF-8 encoding.
250          This may fix display issues in some browsers.  Patch by Katenkka.
251
252        3.3.3 (2017-07-24)
253        ------------------
254
255        - Fixed CVE-2017-11610.  A vulnerability was found where an authenticated
256          client can send a malicious XML-RPC request to ``supervisord`` that will
257          run arbitrary shell commands on the server.  The commands will be run as
258          the same user as ``supervisord``.  Depending on how ``supervisord`` has been
259          configured, this may be root.  See
260          https://github.com/Supervisor/supervisor/issues/964 for details.
261
262        3.3.2 (2017-06-03)
263        ------------------
264
265        - Fixed a bug introduced in 3.3.0 where the ``supervisorctl reload`` command
266          would crash ``supervisord`` with the error ``OSError: [Errno 9] Bad file
267          descriptor`` if the ``kqueue`` poller was used.  Patch by Jared Suttles.
268
269        - Fixed a bug introduced in 3.3.0 where ``supervisord`` could get stuck in a
270          polling loop after the web interface was used, causing high CPU usage.
271          Patch by Jared Suttles.
272
273        - Fixed a bug where if ``supervisord`` attempted to start but aborted due to
274          another running instance of ``supervisord`` with the same config, the
275          pidfile of the running instance would be deleted.  Patch by coldnight.
276
277        - Fixed a bug where ``supervisorctl fg`` would swallow most XML-RPC faults.
278          ``fg`` now prints the fault and exits.
279
280        - Parsing the config file will now fail with an error message if a process
281          or group name contains a forward slash character (``/``) since it would
282          break the URLs used by the web interface.
283
284        - ``supervisorctl reload`` now shows an error message if an argument is
285          given.  Patch by Joel Krauska.
286
287        - ``supervisorctl`` commands ``avail``, ``reread``, and ``version`` now show
288          an error message if an argument is given.
289
290        3.3.1 (2016-08-02)
291        ------------------
292
293        - Fixed an issue where ``supervisord`` could hang when responding to HTTP
294          requests (including ``supervisorctl`` commands) if the system time was set
295          back after ``supervisord`` was started.
296
297        - Zope ``trackrefs``, a debugging tool that was included in the ``tests``
298          directory but hadn't been used for years, has been removed.
299
300        3.3.0 (2016-05-14)
301        ------------------
302
303        - ``supervisord`` will now use ``kqueue``, ``poll``, or ``select`` to monitor
304          its file descriptors, in that order, depending on what is available on the
305          system.  Previous versions used ``select`` only and would crash with the error
306          ``ValueError: filedescriptor out of range in select()`` when running a large
307          number of subprocesses (whatever number resulted in enough file descriptors
308          to exceed the fixed-size file descriptor table used by ``select``, which is
309          typically 1024).  Patch by Igor Sobreira.
310
311        - ``/etc/supervisor/supervisord.conf`` has been added to the config file search
312          paths.  Many versions of Supervisor packaged for Debian and Ubuntu have
313          included a patch that added this path.  This difference was reported in a
314          number of tickets as a source of confusion and upgrade difficulties, so the
315          path has been added.  Patch by Kelvin Wong.
316
317        - Glob patterns in the ``[include]`` section now support the
318          ``host_node_name`` expansion.  Patch by Paul Lockaby.
319
320        - Files included via the ``[include]`` section are now logged at the ``INFO``
321          level instead of ``WARN``.  Patch by Daniel Hahler.
322
323        3.2.4 (2017-07-24)
324        ------------------
325
326        - Backported from Supervisor 3.3.3:  Fixed CVE-2017-11610.  A vulnerability
327          was found where an authenticated client can send a malicious XML-RPC request
328          to ``supervisord`` that will run arbitrary shell commands on the server.
329          The commands will be run as the same user as ``supervisord``.  Depending on
330          how ``supervisord`` has been configured, this may be root.  See
331          https://github.com/Supervisor/supervisor/issues/964 for details.
332
333        3.2.3 (2016-03-19)
334        ------------------
335
336        - 400 Bad Request is now returned if an XML-RPC request is received with
337          invalid body data.  In previous versions, 500 Internal Server Error
338          was returned.
339
340        3.2.2 (2016-03-04)
341        ------------------
342
343        - Parsing the config file will now fail with an error message if an
344          ``inet_http_server`` or ``unix_http_server`` section contains a ``username=``
345          but no ``password=``.  In previous versions, ``supervisord`` would start with
346          this invalid configuration but the HTTP server would always return a 500
347          Internal Server Error.  Thanks to Chris Ergatides for reporting this issue.
348
349        3.2.1 (2016-02-06)
350        ------------------
351
352        - Fixed a server exception ``OverflowError: int exceeds XML-RPC limits`` that
353          made ``supervisorctl status`` unusable if the system time was far into the
354          future.  The XML-RPC API returns timestamps as XML-RPC integers, but
355          timestamps will exceed the maximum value of an XML-RPC integer in January
356          2038 ("Year 2038 Problem").  For now, timestamps exceeding the maximum
357          integer will be capped at the maximum to avoid the exception and retain
358          compatibility with existing API clients.  In a future version of the API,
359          the return type for timestamps will be changed.
360
361        3.2.0 (2015-11-30)
362        ------------------
363
364        - Files included via the ``[include]`` section are read in sorted order.  In
365          past versions, the order was undefined.  Patch by Ionel Cristian Mărieș.
366
367        - ``supervisorctl start`` and ``supervisorctl stop`` now complete more quickly
368          when handling many processes.  Thanks to Chris McDonough for this patch.
369          See: https://github.com/Supervisor/supervisor/issues/131
370
371        - Environment variables are now expanded for all config file options.
372          Patch by Dexter Tad-y.
373
374        - Added ``signalProcess``, ``signalProcessGroup``, and ``signalAllProcesses``
375          XML-RPC methods to supervisor RPC interface.  Thanks to Casey Callendrello,
376          Marc Abramowitz, and Moriyoshi Koizumi for the patches.
377
378        - Added ``signal`` command to supervisorctl.  Thanks to Moriyoshi Koizumi and
379          Marc Abramowitz for the patches.
380
381        - Errors caused by bad values in a config file now show the config section
382          to make debugging easier.  Patch by Marc Abramowitz.
383
384        - Setting ``redirect_stderr=true`` in an ``[eventlistener:x]`` section is now
385          disallowed because any messages written to ``stderr`` would interfere
386          with the eventlistener protocol on ``stdout``.
387
388        - Fixed a bug where spawning a process could cause ``supervisord`` to crash
389          if an ``IOError`` occurred while setting up logging.  One way this could
390          happen is if a log filename was accidentally set to a directory instead
391          of a file.  Thanks to Grzegorz Nosek for reporting this issue.
392
393        - Fixed a bug introduced in 3.1.0 where ``supervisord`` could crash when
394          attempting to display a resource limit error.
395
396        - Fixed a bug where ``supervisord`` could crash with the message
397          ``Assertion failed for processname: RUNNING not in STARTING`` if a time
398          change caused the last start time of the process to be in the future.
399          Thanks to Róbert Nagy, Sergey Leschenko, and samhair for the patches.
400
401        - A warning is now logged if an eventlistener enters the UNKNOWN state,
402          which usually indicates a bug in the eventlistener.  Thanks to Steve
403          Winton and detailyang for reporting issues that led to this change.
404
405        - Errors from the web interface are now logged at the ``ERROR`` level.
406          Previously, they were logged at the ``TRACE`` level and easily
407          missed.  Thanks to Thomas Güttler for reporting this issue.
408
409        - Fixed ``DeprecationWarning: Parameters to load are deprecated. Call
410          .resolve and .require separately.`` on setuptools >= 11.3.
411
412        - If ``redirect_stderr=true`` and ``stderr_logfile=auto``, no stderr log
413          file will be created.  In previous versions, an empty stderr log file
414          would be created.  Thanks to Łukasz Kożuchowski for the initial patch.
415
416        - Fixed an issue in Medusa that would cause ``supervisorctl tail -f`` to
417          disconnect if many other ``supervisorctl`` commands were run in parallel.
418          Patch by Stefan Friesel.
419
420        3.1.4 (2017-07-24)
421        ------------------
422
423        - Backported from Supervisor 3.3.3:  Fixed CVE-2017-11610.  A vulnerability
424          was found where an authenticated client can send a malicious XML-RPC request
425          to ``supervisord`` that will run arbitrary shell commands on the server.
426          The commands will be run as the same user as ``supervisord``.  Depending on
427          how ``supervisord`` has been configured, this may be root.  See
428          https://github.com/Supervisor/supervisor/issues/964 for details.
429
430        3.1.3 (2014-10-28)
431        ------------------
432
433        - Fixed an XML-RPC bug where the ElementTree-based parser handled strings
434          like ``<value><string>hello</string></value>`` but not strings like
435          ``<value>hello</value>``, which are valid in the XML-RPC spec.  This
436          fixes compatibility with the Apache XML-RPC client for Java and
437          possibly other clients.
438
439        3.1.2 (2014-09-07)
440        ------------------
441
442        - Fixed a bug where ``tail group:*`` in ``supervisorctl`` would show a 500
443          Internal Server Error rather than a BAD_NAME fault.
444
445        - Fixed a bug where the web interface would show a 500 Internal Server Error
446          instead of an error message for some process start faults.
447
448        - Removed medusa files not used by Supervisor.
449
450        3.1.1 (2014-08-11)
451        ------------------
452
453        - Fixed a bug where ``supervisorctl tail -f name`` output would stop if log
454          rotation occurred while tailing.
455
456        - Prevent a crash when a greater number of file descriptors were attempted to
457          be opened than permitted by the environment when starting a bunch of
458          programs.  Now, instead a spawn error is logged.
459
460        - Compute "channel delay" properly, fixing symptoms where a supervisorctl
461          start command would hang for a very long time when a process (or many
462          processes) are spewing to their stdout or stderr.  See comments attached to
463          https://github.com/Supervisor/supervisor/pull/263 .
464
465        - Added ``docs/conf.py``, ``docs/Makefile``, and ``supervisor/scripts/*.py``
466          to the release package.
467
468        3.1.0 (2014-07-29)
469        ------------------
470
471        - The output of the ``start``, ``stop``, ``restart``, and ``clear`` commands
472          in ``supervisorctl`` has been changed to be consistent with the ``status``
473          command.  Previously, the ``status`` command would show a process like
474          ``foo:foo_01`` but starting that process would show ``foo_01: started``
475          (note the group prefix ``foo:`` was missing).  Now, starting the process
476          will show ``foo:foo_01: started``.  Suggested by Chris Wood.
477
478        - The ``status`` command in ``supervisorctl`` now supports group name
479          syntax: ``status group:*``.
480
481        - The process column in the table output by the ``status`` command in
482          ``supervisorctl`` now expands to fit the widest name.
483
484        - The ``update`` command in ``supervisorctl`` now accepts optional group
485          names.  When group names are specified, only those groups will be
486          updated.  Patch by Gary M. Josack.
487
488        - Tab completion in ``supervisorctl`` has been improved and now works for
489          more cases.  Thanks to Mathieu Longtin and Marc Abramowitz for the patches.
490
491        - Attempting to start or stop a process group in ``supervisorctl`` with the
492          ``group:*`` syntax will now show the same error message as the ``process``
493          syntax if the name does not exist.  Previously, it would show a Python
494          exception.  Patch by George Ang.
495
496        - Added new ``PROCESS_GROUP_ADDED`` and ``PROCESS_GROUP_REMOVED`` events.
497          These events are fired when process groups are added or removed from
498          Supervisor's runtime configuration when using the ``add`` and ``remove``
499          commands in ``supervisorctl``.  Patch by Brent Tubbs.
500
501        - Stopping a process in the backoff state now changes it to the stopped
502          state.  Previously, an attempt to stop a process in backoff would be
503          ignored.  Patch by Pascal Varet.
504
505        - The ``directory`` option is now expanded separately for each process in
506          a homogeneous process group.  This allows each process to have its own
507          working directory.  Patch by Perttu Ranta-aho.
508
509        - Removed ``setuptools`` from the ``requires`` list in ``setup.py`` because
510          it caused installation issues on some systems.
511
512        - Fixed a bug in Medusa where the HTTP Basic authorizer would cause an
513          exception if the password contained a colon.  Thanks to Thomas Güttler
514          for reporting this issue.
515
516        - Fixed an XML-RPC bug where calling supervisor.clearProcessLogs() with a
517          name like ``group:*`` would cause a 500 Internal Server Error rather than
518          returning a BAD_NAME fault.
519
520        - Fixed a hang that could occur in ``supervisord`` if log rotation is used
521          and an outside program deletes an active log file.  Patch by Magnus Lycka.
522
523        - A warning is now logged if a glob pattern in an ``[include]`` section does
524          not match any files.  Patch by Daniel Hahler.
525
526        3.0.1 (2017-07-24)
527        ------------------
528
529        - Backported from Supervisor 3.3.3:  Fixed CVE-2017-11610.  A vulnerability
530          was found where an authenticated client can send a malicious XML-RPC request
531          to ``supervisord`` that will run arbitrary shell commands on the server.
532          The commands will be run as the same user as ``supervisord``.  Depending on
533          how ``supervisord`` has been configured, this may be root.  See
534          https://github.com/Supervisor/supervisor/issues/964 for details.
535
536        3.0 (2013-07-30)
537        ----------------
538
539        - Parsing the config file will now fail with an error message if a process
540          or group name contains characters that are not compatible with the
541          eventlistener protocol.
542
543        - Fixed a bug where the ``tail -f`` command in ``supervisorctl`` would fail
544          if the combined length of the username and password was over 56 characters.
545
546        - Reading the config file now gives a separate error message when the config
547          file exists but can't be read.  Previously, any error reading the file
548          would be reported as "could not find config file".  Patch by Jens Rantil.
549
550        - Fixed an XML-RPC bug where array elements after the first would be ignored
551          when using the ElementTree-based XML parser.  Patch by Zev Benjamin.
552
553        - Fixed the usage message output by ``supervisorctl`` to show the correct
554          default config file path.  Patch by Alek Storm.
555
556        3.0b2 (2013-05-28)
557        ------------------
558
559        - The behavior of the program option ``user`` has changed.  In all previous
560          versions, if ``supervisord`` failed to switch to the user, a warning would
561          be sent to the stderr log but the child process would still be spawned.
562          This means that a mistake in the config file could result in a child
563          process being unintentionally spawned as root.  Now, ``supervisord`` will
564          not spawn the child unless it was able to successfully switch to the user.
565          Thanks to Igor Partola for reporting this issue.
566
567        - If a user specified in the config file does not exist on the system,
568          ``supervisord`` will now print an error and refuse to start.
569
570        - Reverted a change to logging introduced in 3.0b1 that was intended to allow
571          multiple processes to log to the same file with the rotating log handler.
572          The implementation caused supervisord to crash during reload and to leak
573          file handles.  Also, since log rotation options are given on a per-program
574          basis, impossible configurations could be created (conflicting rotation
575          options for the same file).  Given this and that supervisord now has syslog
576          support, it was decided to remove this feature.  A warning was added to the
577          documentation that two processes may not log to the same file.
578
579        - Fixed a bug where parsing ``command=`` could cause supervisord to crash if
580          shlex.split() fails, such as a bad quoting.  Patch by Scott Wilson.
581
582        - It is now possible to use ``supervisorctl`` on a machine with no
583          ``supervisord.conf`` file by supplying the connection information in
584          command line options.  Patch by Jens Rantil.
585
586        - Fixed a bug where supervisord would crash if the syslog handler was used
587          and supervisord received SIGUSR2 (log reopen request).
588
589        - Fixed an XML-RPC bug where calling supervisor.getProcessInfo() with a bad
590          name would cause a 500 Internal Server Error rather than the returning
591          a BAD_NAME fault.
592
593        - Added a favicon to the web interface.  Patch by Caio Ariede.
594
595        - Fixed a test failure due to incorrect handling of daylight savings time
596          in the childutils tests.  Patch by Ildar Hizbulin.
597
598        - Fixed a number of pyflakes warnings for unused variables, imports, and
599          dead code.  Patch by Philippe Ombredanne.
600
601        3.0b1 (2012-09-10)
602        ------------------
603
604        - Fixed a bug where parsing ``environment=`` did not verify that key/value
605          pairs were correctly separated.  Patch by Martijn Pieters.
606
607        - Fixed a bug in the HTTP server code that could cause unnecessary delays
608          when sending large responses.  Patch by Philip Zeyliger.
609
610        - When supervisord starts up as root, if the ``-c`` flag was not provided, a
611          warning is now emitted to the console.  Rationale: supervisord looks in the
612          current working directory for a ``supervisord.conf`` file; someone might
613          trick the root user into starting supervisord while cd'ed into a directory
614          that has a rogue ``supervisord.conf``.
615
616        - A warning was added to the documentation about the security implications of
617          starting supervisord without the ``-c`` flag.
618
619        - Add a boolean program option ``stopasgroup``, defaulting to false.
620          When true, the flag causes supervisor to send the stop signal to the
621          whole process group.  This is useful for programs, such as Flask in debug
622          mode, that do not propagate stop signals to their children, leaving them
623          orphaned.
624
625        - Python 2.3 is no longer supported.  The last version that supported Python
626          2.3 is Supervisor 3.0a12.
627
628        - Removed the unused "supervisor_rpc" entry point from setup.py.
629
630        - Fixed a bug in the rotating log handler that would cause unexpected
631          results when two processes were set to log to the same file.  Patch
632          by Whit Morriss.
633
634        - Fixed a bug in config file reloading where each reload could leak memory
635          because a list of warning messages would be appended but never cleared.
636          Patch by Philip Zeyliger.
637
638        - Added a new Syslog log handler.  Thanks to Denis Bilenko, Nathan L. Smith,
639          and Jason R. Coombs, who each contributed to the patch.
640
641        - Put all change history into a single file (CHANGES.txt).
642
643        3.0a12 (2011-12-06)
644        -------------------
645
646        - Released to replace a broken 3.0a11 package where non-Python files were
647          not included in the package.
648
649        3.0a11 (2011-12-06)
650        -------------------
651
652        - Added a new file, ``PLUGINS.rst``, with a listing of third-party plugins
653          for Supervisor.  Contributed by Jens Rantil.
654
655        - The ``pid`` command in supervisorctl can now be used to retrieve the PIDs
656          of child processes.  See ``help pid``.  Patch by Gregory Wisniewski.
657
658        - Added a new ``host_node_name`` expansion that will be expanded to the
659          value returned by Python's ``platform.node`` (see
660          http://docs.python.org/library/platform.html#platform.node).
661          Patch by Joseph Kondel.
662
663        - Fixed a bug in the web interface where pages over 64K would be truncated.
664          Thanks to Drew Perttula and Timothy Jones for reporting this.
665
666        - Renamed ``README.txt`` to ``README.rst`` so GitHub renders the file as
667          ReStructuredText.
668
669        - The XML-RPC server is now compatible with clients that do not send empty
670          <params> when there are no parameters for the method call.  Thanks to
671          Johannes Becker for reporting this.
672
673        - Fixed ``supervisorctl --help`` output to show the correct program name.
674
675        - The behavior of the configuration options ``minfds`` and ``minprocs`` has
676          changed.  Previously, if a hard limit was less than ``minfds`` or
677          ``minprocs``, supervisord would unconditionally abort with an error.  Now,
678          supervisord will attempt to raise the hard limit.  This may succeed if
679          supervisord is run as root, otherwise the error is printed as before.
680          Patch by Benoit Sigoure.
681
682        - Add a boolean program option ``killasgroup``, defaulting to false,
683          if true when resorting to send SIGKILL to stop/terminate the process
684          send it to its whole process group instead to take care of possible
685          children as well and not leave them behind.  Patch by Samuele Pedroni.
686
687        - Environment variables may now be used in the configuration file
688          for options that support string expansion.  Patch by Aleksey Sivokon.
689
690        - Fixed a race condition where supervisord might not act on a signal sent
691          to it.  Thanks to Adar Dembo for reporting the issue and supplying the
692          initial patch.
693
694        - Updated the output of ``echo_supervisord_conf`` to fix typos and
695          improve comments.  Thanks to Jens Rantil for noticing these.
696
697        - Fixed a possible 500 Server Error from the web interface.  This was
698          observed when using Supervisor on a domain socket behind Nginx, where
699          Supervisor would raise an exception because REMOTE_ADDR was not set.
700          Patch by David Bennett.
701
702        3.0a10 (2011-03-30)
703        -------------------
704
705        - Fixed the stylesheet of the web interface so the footer line won't overlap
706          a long process list.  Thanks to Derek DeVries for the patch.
707
708        - Allow rpc interface plugins to register new events types.
709
710        - Bug fix for FCGI sockets not getting cleaned up when the ``reload`` command
711          is issued from supervisorctl.  Also, the default behavior has changed for
712          FCGI sockets.  They are now closed whenever the number of running processes
713          in a group hits zero.  Previously, the sockets were kept open unless a
714          group-level stop command was issued.
715
716        - Better error message when HTTP server cannot reverse-resolve a hostname to
717          an IP address.  Previous behavior: show a socket error.  Current behavior:
718          spit out a suggestion to stdout.
719
720        - Environment variables set via ``environment=`` value within
721          ``[supervisord]`` section had no effect.  Thanks to Wyatt Baldwin
722          for a patch.
723
724        - Fix bug where stopping process would cause process output that happened
725          after the stop request was issued to be lost.  See
726          https://github.com/Supervisor/supervisor/issues/11.
727
728        - Moved 2.X change log entries into ``HISTORY.txt``.
729
730        - Converted ``CHANGES.txt`` and ``README.txt`` into proper ReStructuredText
731          and included them in the ``long_description`` in ``setup.py``.
732
733        - Added a tox.ini to the package (run via ``tox`` in the package dir).  Tests
734          supervisor on multiple Python versions.
735
736        3.0a9 (2010-08-13)
737        ------------------
738
739        - Use rich comparison methods rather than __cmp__ to sort process configs and
740          process group configs to better straddle Python versions.  (thanks to
741          Jonathan Riboux for identifying the problem and supplying an initial
742          patch).
743
744        - Fixed test_supervisorctl.test_maintail_dashf test for Python 2.7.  (thanks
745          to Jonathan Riboux for identifying the problem and supplying an initial
746          patch).
747
748        - Fixed the way that supervisor.datatypes.url computes a "good" URL
749          for compatibility with Python 2.7 and Python >= 2.6.5.  URLs with
750          bogus "schemes://" will now be accepted as a version-straddling
751          compromise (before they were rejected before supervisor would
752          start).  (thanks to Jonathan Riboux for identifying the problem
753          and supplying an initial patch).
754
755        - Add a ``-v`` / ``--version`` option to supervisord: Print the
756          supervisord version number out to stdout and exit.  (Roger Hoover)
757
758        - Import iterparse from xml.etree when available (eg: Python 2.6).  Patch
759          by Sidnei da Silva.
760
761        - Fixed the url to the supervisor-users mailing list.  Patch by
762          Sidnei da Silva
763
764        - When parsing "environment=" in the config file, changes introduced in
765          3.0a8 prevented Supervisor from parsing some characters commonly
766          found in paths unless quoting was used as in this example::
767
768            environment=HOME='/home/auser'
769
770          Supervisor once again allows the above line to be written as::
771
772            environment=HOME=/home/auser
773
774          Alphanumeric characters, "_", "/", ".", "+", "-", "(", ")", and ":" can all
775          be used as a value without quoting. If any other characters are needed in
776          the value, please quote it as in the first example above.  Thanks to Paul
777          Heideman for reporting this issue.
778
779        - Supervisor will now look for its config file in locations relative to the
780          executable path, allowing it to be used more easily in virtual
781          environments.  If sys.argv[0] is ``/path/to/venv/bin/supervisorctl``,
782          supervisor will now look for it's config file in
783          ``/path/to/venv/etc/supervisord.conf`` and
784          ``/path/to/venv/supervisord.conf`` in addition to the other standard
785          locations.  Patch by Chris Rossi.
786
787        3.0a8 (2010-01-20)
788        ------------------
789
790        - Don't cleanup file descriptors on first supervisord invocation:
791          this is a lame workaround for Snow Leopard systems that use
792          libdispatch and are receiving "Illegal instruction" messages at
793          supervisord startup time.  Restarting supervisord via
794          "supervisorctl restart" may still cause a crash on these systems.
795
796        - Got rid of Medusa hashbang headers in various files to ease RPM
797          packaging.
798
799        - Allow umask to be 000 (patch contributed by Rowan Nairn).
800
801        - Fixed a bug introduced in 3.0a7 where supervisorctl wouldn't ask
802          for a username/password combination properly from a
803          password-protected supervisord if it wasn't filled in within the
804          "[supervisorctl]" section username/password values.  It now
805          properly asks for a username and password.
806
807        - Fixed a bug introduced in 3.0a7 where setup.py would not detect the
808          Python version correctly.  Patch by Daniele Paolella.
809
810        - Fixed a bug introduced in 3.0a7 where parsing a string of key/value
811          pairs failed on Python 2.3 due to use of regular expression syntax
812          introduced in Python 2.4.
813
814        - Removed the test suite for the ``memmon`` console script, which was
815          moved to the Superlance package in 3.0a7.
816
817        - Added release dates to CHANGES.txt.
818
819        - Reloading the config for an fcgi process group did not close the fcgi
820          socket - now, the socket is closed whenever the group is stopped as a unit
821          (including during config update). However, if you stop all the processes
822          in a group individually, the socket will remain open to allow for graceful
823          restarts of FCGI daemons.  (Roger Hoover)
824
825        - Rereading the config did not pick up changes to the socket parameter in a
826          fcgi-program section.  (Roger Hoover)
827
828        - Made a more friendly exception message when a FCGI socket cannot be
829          created.  (Roger Hoover)
830
831        - Fixed a bug where the --serverurl option of supervisorctl would not
832          accept a URL with a "unix" scheme.  (Jason Kirtland)
833
834        - Running the tests now requires the "mock" package.  This dependency has
835          been added to "tests_require" in setup.py.  (Roger Hoover)
836
837        - Added support for setting the ownership and permissions for an FCGI socket.
838          This is done using new "socket_owner" and "socket_mode" options in an
839          [fcgi-program:x] section.  See the manual for details.  (Roger Hoover)
840
841        - Fixed a bug where the FCGI socket reference count was not getting
842          decremented on spawn error.  (Roger Hoover)
843
844        - Fixed a Python 2.6 deprecation warning on use of the "sha" module.
845
846        - Updated ez_setup.py to one that knows about setuptools 0.6c11.
847
848        - Running "supervisorctl shutdown" no longer dumps a Python backtrace
849          when it can't connect to supervisord on the expected socket.  Thanks
850          to Benjamin Smith for reporting this.
851
852        - Removed use of collections.deque in our bundled version of asynchat
853          because it broke compatibility with Python 2.3.
854
855        - The sample configuration output by "echo_supervisord_conf" now correctly
856          shows the default for "autorestart" as "unexpected".  Thanks to
857          William Dode for noticing it showed the wrong value.
858
859        3.0a7 (2009-05-24)
860        ------------------
861
862        - We now bundle our own patched version of Medusa contributed by Jason
863          Kirtland to allow Supervisor to run on Python 2.6.  This was done
864          because Python 2.6 introduced backwards incompatible changes to
865          asyncore and asynchat in the stdlib.
866
867        - The console script ``memmon``, introduced in Supervisor 3.0a4, has
868          been moved to Superlance (http://pypi.python.org/pypi/superlance).
869          The Superlance package contains other useful monitoring tools designed
870          to run under Supervisor.
871
872        - Supervisorctl now correctly interprets all of the error codes that can
873          be returned when starting a process.  Patch by Francesc Alted.
874
875        - New ``stdout_events_enabled`` and ``stderr_events_enabled`` config options
876          have been added to the ``[program:x]``, ``[fcgi-program:x]``, and
877          ``[eventlistener:x]`` sections.  These enable the emitting of new
878          PROCESS_LOG events for a program.  If unspecified, the default is False.
879
880          If enabled for a subprocess, and data is received from the stdout or
881          stderr of the subprocess while not in the special capture mode used by
882          PROCESS_COMMUNICATION, an event will be emitted.
883
884          Event listeners can subscribe to either PROCESS_LOG_STDOUT or
885          PROCESS_LOG_STDERR individually, or PROCESS_LOG for both.
886
887        - Values for subprocess environment variables specified with environment=
888          in supervisord.conf can now be optionally quoted, allowing them to
889          contain commas.  Patch by Tim Godfrey.
890
891        - Added a new event type, REMOTE_COMMUNICATION, that is emitted by a new
892          RPC method, supervisor.sendRemoteCommEvent().
893
894        - Patch for bug #268 (KeyError on ``here`` expansion for
895          stdout/stderr_logfile) from David E. Kindred.
896
897        - Add ``reread``, ``update``, and ``avail`` commands based on Anders
898          Quist's ``online_config_reload.diff`` patch.  This patch extends
899          the "add" and "drop" commands with automagical behavior::
900
901            In supervisorctl:
902
903              supervisor> status
904              bar                              RUNNING    pid 14864, uptime 18:03:42
905              baz                              RUNNING    pid 23260, uptime 0:10:16
906              foo                              RUNNING    pid 14866, uptime 18:03:42
907              gazonk                           RUNNING    pid 23261, uptime 0:10:16
908              supervisor> avail
909              bar                              in use    auto      999:999
910              baz                              in use    auto      999:999
911              foo                              in use    auto      999:999
912              gazonk                           in use    auto      999:999
913              quux                             avail     auto      999:999
914
915            Now we add this to our conf:
916
917              [group:zegroup]
918              programs=baz,gazonk
919
920            Then we reread conf:
921
922              supervisor> reread
923              baz: disappeared
924              gazonk: disappeared
925              quux: available
926              zegroup: available
927              supervisor> avail
928              bar                              in use    auto      999:999
929              foo                              in use    auto      999:999
930              quux                             avail     auto      999:999
931              zegroup:baz                      avail     auto      999:999
932              zegroup:gazonk                   avail     auto      999:999
933              supervisor> status
934              bar                              RUNNING    pid 14864, uptime 18:04:18
935              baz                              RUNNING    pid 23260, uptime 0:10:52
936              foo                              RUNNING    pid 14866, uptime 18:04:18
937              gazonk                           RUNNING    pid 23261, uptime 0:10:52
938
939            The magic make-it-so command:
940
941              supervisor> update
942              baz: stopped
943              baz: removed process group
944              gazonk: stopped
945              gazonk: removed process group
946              zegroup: added process group
947              quux: added process group
948              supervisor> status
949              bar                              RUNNING    pid 14864, uptime 18:04:43
950              foo                              RUNNING    pid 14866, uptime 18:04:43
951              quux                             RUNNING    pid 23561, uptime 0:00:02
952              zegroup:baz                      RUNNING    pid 23559, uptime 0:00:02
953              zegroup:gazonk                   RUNNING    pid 23560, uptime 0:00:02
954              supervisor> avail
955              bar                              in use    auto      999:999
956              foo                              in use    auto      999:999
957              quux                             in use    auto      999:999
958              zegroup:baz                      in use    auto      999:999
959              zegroup:gazonk                   in use    auto      999:999
960
961        - Fix bug with symptom "KeyError: 'process_name'" when using a logfile name
962          including documented``process_name`` Python string expansions.
963
964        - Tab completions in the supervisorctl shell, and a foreground mode for
965          Supervisor, implemented as a part of GSoC.  The supervisorctl program now
966          has a ``fg`` command, which makes it possible to supply inputs to a
967          process, and see its output/error stream in real time.
968
969        - Process config reloading implemented by Anders Quist.  The
970          supervisorctl program now has the commands "add" and "drop".
971          "add <programname>" adds the process group implied by <programname>
972          in the config file.  "drop <programname>" removes the process
973          group from the running configuration (it must already be stopped).
974          This makes it possible to add processes to and remove processes from
975          a running supervisord without restarting the supervisord process.
976
977        - Fixed a bug where opening the HTTP servers would fail silently
978          for socket errors other than errno.EADDRINUSE.
979
980        - Thanks to Dave Peticolas, using "reload" against a supervisord
981          that is running in the background no longer causes supervisord
982          to crash.
983
984        - Configuration options for logfiles now accept mixed case reserved
985          words (e.g. "AUTO" or "auto") for consistency with other options.
986
987        - childutils.eventdata was buggy, it could not deal with carriage returns
988          in data.  See http://www.plope.com/software/collector/257.  Thanks
989          to Ian Bicking.
990
991        - Per-process exitcodes= configuration now will not accept exit
992          codes that are not 8-bit unsigned integers (supervisord will not
993          start when one of the exit codes is outside the range of 0 - 255).
994
995        - Per-process ``directory`` value can now contain expandable values like
996          ``%(here)s``. (See http://www.plope.com/software/collector/262).
997
998        - Accepted patch from Roger Hoover to allow for a new sort of
999          process group: "fcgi-program".  Adding one of these to your
1000          supervisord.conf allows you to control fastcgi programs.  FastCGI
1001          programs cannot belong to heterogenous groups.
1002
1003          The configuration for FastCGI programs is the same as regular programs
1004          except an additional "socket" parameter.  Substitution happens on the
1005          socket parameter with the ``here`` and ``program_name`` variables::
1006
1007           [fcgi-program:fcgi_test]
1008           ;socket=tcp://localhost:8002
1009           socket=unix:///path/to/fcgi/socket
1010
1011        - Supervisorctl now supports a plugin model for supervisorctl
1012          commands.
1013
1014        - Added the ability to retrieve supervisord's own pid through
1015          supervisor.getPID() on the XML-RPC interface or a new
1016          "pid" command on supervisorctl.
1017
1018        3.0a6 (2008-04-07)
1019        ------------------
1020
1021        - The RotatingFileLogger had a race condition in its doRollover
1022          method whereby a file might not actually exist despite a call to
1023          os.path.exists on the line above a place where we try to remove
1024          it.  We catch the exception now and ignore the missing file.
1025
1026        3.0a5 (2008-03-13)
1027        ------------------
1028
1029        - Supervisorctl now supports persistent readline history.  To
1030          enable, add "history_file = <pathname>" to the ``[supervisorctl]``
1031          section in your supervisord.conf file.
1032
1033        - Multiple commands may now be issued on one supervisorctl command
1034          line, e.g. "restart prog; tail -f prog".  Separate commands with a
1035          single semicolon; they will be executed in order as you would
1036          expect.
1037
1038        3.0a4 (2008-01-30)
1039        ------------------
1040
1041        - 3.0a3 broke Python 2.3 backwards compatibility.
1042
1043        - On Debian Sarge, one user reported that a call to
1044          options.mktempfile would fail with an "[Errno 9] Bad file
1045          descriptor" at supervisord startup time.  I was unable to
1046          reproduce this, but we found a workaround that seemed to work for
1047          him and it's included in this release.  See
1048          http://www.plope.com/software/collector/252 for more information.
1049          Thanks to William Dode.
1050
1051        - The fault ``ALREADY_TERMINATED`` has been removed.  It was only raised by
1052          supervisor.sendProcessStdin().  That method now returns ``NOT_RUNNING``
1053          for parity with the other methods. (Mike Naberezny)
1054
1055        - The fault TIMED_OUT has been removed.  It was not used.
1056
1057        - Supervisor now depends on meld3 0.6.4, which does not compile its
1058          C extensions by default, so there is no more need to faff around
1059          with NO_MELD3_EXTENSION_MODULES during installation if you don't
1060          have a C compiler or the Python development libraries on your
1061          system.
1062
1063        - Instead of making a user root around for the sample.conf file,
1064          provide a convenience command "echo_supervisord_conf", which he can
1065          use to echo the sample.conf to his terminal (and redirect to a file
1066          appropriately).  This is a new user convenience (especially one who
1067          has no Python experience).
1068
1069        - Added ``numprocs_start`` config option to ``[program:x]`` and
1070          ``[eventlistener:x]`` sections.  This is an offset used to compute
1071          the first integer that ``numprocs`` will begin to start from.
1072          Contributed by Antonio Beamud Montero.
1073
1074        - Added capability for ``[include]`` config section to config format.
1075          This section must contain a single key "files", which must name a
1076          space-separated list of file globs that will be included in
1077          supervisor's configuration.  Contributed by Ian Bicking.
1078
1079        - Invoking the ``reload`` supervisorctl command could trigger a bug in
1080          supervisord which caused it to crash.  See
1081          http://www.plope.com/software/collector/253 .  Thanks to William Dode for
1082          a bug report.
1083
1084        - The ``pidproxy`` script was made into a console script.
1085
1086        - The ``password`` value in both the ``[inet_http_server]`` and
1087          ``[unix_http_server]`` sections can now optionally be specified as a SHA
1088          hexdigest instead of as cleartext.  Values prefixed with ``{SHA}`` will be
1089          considered SHA hex digests.  To encrypt a password to a form suitable for
1090          pasting into the configuration file using Python, do, e.g.::
1091
1092             >>> import sha
1093             >>> '{SHA}' + sha.new('thepassword').hexdigest()
1094             '{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d'
1095
1096        - The subtypes of the events PROCESS_STATE_CHANGE (and
1097          PROCESS_STATE_CHANGE itself) have been removed, replaced with a
1098          simpler set of PROCESS_STATE subscribable event types.
1099
1100          The new event types are:
1101
1102            PROCESS_STATE_STOPPED
1103            PROCESS_STATE_EXITED
1104            PROCESS_STATE_STARTING
1105            PROCESS_STATE_STOPPING
1106            PROCESS_STATE_BACKOFF
1107            PROCESS_STATE_FATAL
1108            PROCESS_STATE_RUNNING
1109            PROCESS_STATE_UNKNOWN
1110            PROCESS_STATE # abstract
1111
1112          PROCESS_STATE_STARTING replaces:
1113
1114            PROCESS_STATE_CHANGE_STARTING_FROM_STOPPED
1115            PROCESS_STATE_CHANGE_STARTING_FROM_BACKOFF
1116            PROCESS_STATE_CHANGE_STARTING_FROM_EXITED
1117            PROCESS_STATE_CHANGE_STARTING_FROM_FATAL
1118
1119          PROCESS_STATE_RUNNING replaces
1120          PROCESS_STATE_CHANGE_RUNNING_FROM_STARTED
1121
1122          PROCESS_STATE_BACKOFF replaces
1123          PROCESS_STATE_CHANGE_BACKOFF_FROM_STARTING
1124
1125          PROCESS_STATE_STOPPING replaces:
1126
1127            PROCESS_STATE_CHANGE_STOPPING_FROM_RUNNING
1128            PROCESS_STATE_CHANGE_STOPPING_FROM_STARTING
1129
1130          PROCESS_STATE_EXITED replaces
1131          PROCESS_STATE_CHANGE_EXITED_FROM_RUNNING
1132
1133          PROCESS_STATE_STOPPED replaces
1134          PROCESS_STATE_CHANGE_STOPPED_FROM_STOPPING
1135
1136          PROCESS_STATE_FATAL replaces
1137          PROCESS_STATE_CHANGE_FATAL_FROM_BACKOFF
1138
1139          PROCESS_STATE_UNKNOWN replaces PROCESS_STATE_CHANGE_TO_UNKNOWN
1140
1141          PROCESS_STATE replaces PROCESS_STATE_CHANGE
1142
1143          The PROCESS_STATE_CHANGE_EXITED_OR_STOPPED abstract event is gone.
1144
1145          All process state changes have at least "processname",
1146          "groupname", and "from_state" (the name of the previous state) in
1147          their serializations.
1148
1149          PROCESS_STATE_EXITED additionally has "expected" (1 or 0) and "pid"
1150          (the process id) in its serialization.
1151
1152          PROCESS_STATE_RUNNING, PROCESS_STATE_STOPPING,
1153          PROCESS_STATE_STOPPED additionally have "pid" in their
1154          serializations.
1155
1156          PROCESS_STATE_STARTING and PROCESS_STATE_BACKOFF have "tries" in
1157          their serialization (initially "0", bumped +1 each time a start
1158          retry happens).
1159
1160        - Remove documentation from README.txt, point people to
1161          http://supervisord.org/manual/ .
1162
1163        - The eventlistener request/response protocol has changed.  OK/FAIL
1164          must now be wrapped in a RESULT envelope so we can use it for more
1165          specialized communications.
1166
1167          Previously, to signify success, an event listener would write the string
1168          ``OK\n`` to its stdout.  To signify that the event was seen but couldn't
1169          be handled by the listener and should be rebuffered, an event listener
1170          would write the string ``FAIL\n`` to its stdout.
1171
1172          In the new protocol, the listener must write the string::
1173
1174            RESULT {resultlen}\n{result}
1175
1176          For example, to signify OK::
1177
1178            RESULT 2\nOK
1179
1180          To signify FAIL::
1181
1182            RESULT 4\nFAIL
1183
1184          See the scripts/sample_eventlistener.py script for an example.
1185
1186        - To provide a hook point for custom results returned from event
1187          handlers (see above) the [eventlistener:x] configuration sections
1188          now accept a "result_handler=" parameter,
1189          e.g. "result_handler=supervisor.dispatchers:default_handler" (the
1190          default) or "handler=mypackage:myhandler".  The keys are pkgutil
1191          "entry point" specifications (importable Python function names).
1192          Result handlers must be callables which accept two arguments: one
1193          named "event" which represents the event, and the other named
1194          "result", which represents the listener's result.  A result
1195          handler either executes successfully or raises an exception.  If
1196          it raises a supervisor.dispatchers.RejectEvent exception, the
1197          event will be rebuffered, and the eventhandler will be placed back
1198          into the ACKNOWLEDGED state.  If it raises any other exception,
1199          the event handler will be placed in the UNKNOWN state.  If it does
1200          not raise any exception, the event is considered successfully
1201          processed.  A result handler's return value is ignored.  Writing a
1202          result handler is a "in case of emergency break glass" sort of
1203          thing, it is not something to be used for arbitrary business code.
1204          In particular, handlers *must not block* for any appreciable
1205          amount of time.
1206
1207          The standard eventlistener result handler
1208          (supervisor.dispatchers:default_handler) does nothing if it receives an
1209          "OK" and will raise a supervisor.dispatchers.RejectEvent exception if it
1210          receives any other value.
1211
1212        - Supervisord now emits TICK events, which happen every N seconds.
1213          Three types of TICK events are available: TICK_5 (every five
1214          seconds), TICK_60 (every minute), TICK_3600 (every hour).  Event
1215          listeners may subscribe to one of these types of events to perform
1216          every-so-often processing.  TICK events are subtypes of the EVENT
1217          type.
1218
1219        - Get rid of OSX platform-specific memory monitor and replace with
1220          memmon.py, which works on both Linux and Mac OS.  This script is
1221          now a console script named "memmon".
1222
1223        - Allow "web handler" (the handler which receives http requests from
1224          browsers visiting the web UI of supervisor) to deal with POST requests.
1225
1226        - RPC interface methods stopProcess(), stopProcessGroup(), and
1227          stopAllProcesses() now take an optional "wait" argument that defaults
1228          to True for parity with the start methods.
1229
1230        3.0a3 (2007-10-02)
1231        ------------------
1232
1233        - Supervisorctl now reports a better error message when the main supervisor
1234          XML-RPC namespace is not registered.  Thanks to Mike Orr for reporting
1235          this. (Mike Naberezny)
1236
1237        - Create ``scripts`` directory within supervisor package, move
1238          ``pidproxy.py`` there, and place sample event listener and comm event
1239          programs within the directory.
1240
1241        - When an event notification is buffered (either because a listener rejected
1242          it or because all listeners were busy when we attempted to send it
1243          originally), we now rebuffer it in a way that will result in it being
1244          retried earlier than it used to be.
1245
1246        - When a listener process exits (unexpectedly) before transitioning from the
1247          BUSY state, rebuffer the event that was being processed.
1248
1249        - supervisorctl ``tail`` command now accepts a trailing specifier: ``stderr``
1250          or ``stdout``, which respectively, allow a user to tail the stderr or
1251          stdout of the named process.  When this specifier is not provided, tail
1252          defaults to stdout.
1253
1254        - supervisor ``clear`` command now clears both stderr and stdout logs for the
1255          given process.
1256
1257        - When a process encounters a spawn error as a result of a failed execve or
1258          when it cannot setuid to a given uid, it now puts this info into the
1259          process' stderr log rather than its stdout log.
1260
1261        - The event listener protocol header now contains the ``server`` identifier,
1262          the ``pool`` that the event emanated from, and the ``poolserial`` as well
1263          as the values it previously contained (version, event name, serial, and
1264          length).  The server identifier is taken from the config file options value
1265          ``identifier``, the ``pool`` value is the name of the listener pool that
1266          this event emanates from, and the ``poolserial`` is a serial number
1267          assigned to the event local to the pool that is processing it.
1268
1269        - The event listener protocol header is now a sequence of key-value
1270          pairs rather than a list of positional values.  Previously, a
1271          representative header looked like::
1272
1273            SUPERVISOR3.0 PROCESS_COMMUNICATION_STDOUT 30 22\n
1274
1275          Now it looks like::
1276
1277            ver:3.0 server:supervisor serial:21 ...
1278
1279        - Specific event payload serializations have changed.  All event
1280          types that deal with processes now include the pid of the process
1281          that the event is describing.  In event serialization "header"
1282          values, we've removed the space between the header name and the
1283          value and headers are now separated by a space instead of a line
1284          feed.  The names of keys in all event types have had underscores
1285          removed.
1286
1287        - Abandon the use of the Python stdlib ``logging`` module for speed
1288          and cleanliness purposes.  We've rolled our own.
1289
1290        - Fix crash on start if AUTO logging is used with a max_bytes of
1291          zero for a process.
1292
1293        - Improve process communication event performance.
1294
1295        - The process config parameters ``stdout_capturefile`` and
1296          ``stderr_capturefile`` are no longer valid.  They have been replaced with
1297          the ``stdout_capture_maxbytes`` and ``stderr_capture_maxbytes`` parameters,
1298          which are meant to be suffix-multiplied integers.  They both default to
1299          zero.  When they are zero, process communication event capturing is not
1300          performed.  When either is nonzero, the value represents the maximum number
1301          of bytes that will be captured between process event start and end tags.
1302          This change was to support the fact that we no longer keep capture data in
1303          a separate file, we just use a FIFO in RAM to maintain capture info.  For
1304          users whom don't care about process communication events, or whom haven't
1305          changed the defaults for ``stdout_capturefile`` or ``stderr_capturefile``,
1306          they needn't do anything to their configurations to deal with this change.
1307
1308        - Log message levels have been normalized.  In particular, process
1309          stdin/stdout is now logged at ``debug`` level rather than at ``trace``
1310          level (``trace`` level is now reserved for output useful typically for
1311          debugging supervisor itself).  See "Supervisor Log Levels" in the
1312          documentation for more info.
1313
1314        - When an event is rebuffered (because all listeners are busy or a
1315          listener rejected the event), the rebuffered event is now inserted
1316          in the head of the listener event queue.  This doesn't guarantee
1317          event emission in natural ordering, because if a listener rejects
1318          an event or dies while it's processing an event, it can take an
1319          arbitrary amount of time for the event to be rebuffered, and other
1320          events may be processed in the meantime.  But if pool listeners
1321          never reject an event or don't die while processing an event, this
1322          guarantees that events will be emitted in the order that they were
1323          received because if all listeners are busy, the rebuffered event
1324          will be tried again "first" on the next go-around.
1325
1326        - Removed EVENT_BUFFER_OVERFLOW event type.
1327
1328        - The supervisorctl xmlrpc proxy can now communicate with
1329          supervisord using a persistent HTTP connection.
1330
1331        - A new module "supervisor.childutils" was added.  This module
1332          provides utilities for Python scripts which act as children of
1333          supervisord.  Most notably, it contains an API method
1334          "getRPCInterface" allows you to obtain an xmlrpclib ServerProxy
1335          that is willing to communicate with the parent supervisor.  It
1336          also contains utility functions that allow for parsing of
1337          supervisor event listener protocol headers.  A pair of scripts
1338          (loop_eventgen.py and loop_listener.py) were added to the script
1339          directory that serve as examples about how to use the childutils
1340          module.
1341
1342        - A new envvar is added to child process environments:
1343          SUPERVISOR_SERVER_URL.  This contains the server URL for the
1344          supervisord running the child.
1345
1346        - An ``OK`` URL was added at ``/ok.html`` which just returns the string
1347          ``OK`` (can be used for up checks or speed checks via plain-old-HTTP).
1348
1349        - An additional command-line option ``--profile_options`` is accepted
1350          by the supervisord script for developer use::
1351
1352            supervisord -n -c sample.conf --profile_options=cumulative,calls
1353
1354          The values are sort_stats options that can be passed to the
1355          standard Python profiler's PStats sort_stats method.
1356
1357          When you exit supervisor, it will print Python profiling output to
1358          stdout.
1359
1360        - If cElementTree is installed in the Python used to invoke
1361          supervisor, an alternate (faster, by about 2X) XML parser will be
1362          used to parse XML-RPC request bodies.  cElementTree was added as
1363          an "extras_require" option in setup.py.
1364
1365        - Added the ability to start, stop, and restart process groups to
1366          supervisorctl.  To start a group, use ``start groupname:*``.  To start
1367          multiple groups, use ``start groupname1:* groupname2:*``.  Equivalent
1368          commands work for "stop" and "restart". You can mix and match short
1369          processnames, fullly-specified group:process names, and groupsplats on the
1370          same line for any of these commands.
1371
1372        - Added ``directory`` option to process config.  If you set this
1373          option, supervisor will chdir to this directory before executing
1374          the child program (and thus it will be the child's cwd).
1375
1376        - Added ``umask`` option to process config.  If you set this option,
1377          supervisor will set the umask of the child program.  (Thanks to
1378          Ian Bicking for the suggestion).
1379
1380        - A pair of scripts ``osx_memmon_eventgen.py`` and `osx_memmon_listener.py``
1381          have been added to the scripts directory.  If they are used together as
1382          described in their comments, processes which are consuming "too much"
1383          memory will be restarted.  The ``eventgen`` script only works on OSX (my
1384          main development platform) but it should be trivially generalizable to
1385          other operating systems.
1386
1387        - The long form ``--configuration`` (-c) command line option for
1388          supervisord was broken.  Reported by Mike Orr.  (Mike Naberezny)
1389
1390        - New log level: BLAT (blather).  We log all
1391          supervisor-internal-related debugging info here.  Thanks to Mike
1392          Orr for the suggestion.
1393
1394        - We now allow supervisor to listen on both a UNIX domain socket and an inet
1395          socket instead of making them mutually exclusive.  As a result, the options
1396          "http_port", "http_username", "http_password", "sockchmod" and "sockchown"
1397          are no longer part of the ``[supervisord]`` section configuration. These
1398          have been supplanted by two other sections: ``[unix_http_server]`` and
1399          ``[inet_http_server]``.  You'll need to insert one or the other (depending
1400          on whether you want to listen on a UNIX domain socket or a TCP socket
1401          respectively) or both into your supervisord.conf file.  These sections have
1402          their own options (where applicable) for port, username, password, chmod,
1403          and chown.  See README.txt for more information about these sections.
1404
1405        - All supervisord command-line options related to "http_port",
1406          "http_username", "http_password", "sockchmod" and "sockchown" have
1407          been removed (see above point for rationale).
1408
1409        - The option that *used* to be ``sockchown`` within the ``[supervisord]``
1410          section (and is now named ``chown`` within the ``[unix_http_server]``
1411          section) used to accept a dot-separated user.group value.  The separator
1412          now must be a colon ":", e.g. "user:group".  Unices allow for dots in
1413          usernames, so this change is a bugfix.  Thanks to Ian Bicking for the bug
1414          report.
1415
1416        - If a '-c' option is not specified on the command line, both supervisord and
1417          supervisorctl will search for one in the paths ``./supervisord.conf`` ,
1418          ``./etc/supervisord.conf`` (relative to the current working dir when
1419          supervisord or supervisorctl is invoked) or in ``/etc/supervisord.conf``
1420          (the old default path).  These paths are searched in order, and supervisord
1421          and supervisorctl will use the first one found.  If none are found,
1422          supervisor will fail to start.
1423
1424        - The Python string expression ``%(here)s`` (referring to the directory in
1425          which the the configuration file was found) can be used within the
1426          following sections/options within the config file::
1427
1428              unix_http_server:file
1429              supervisor:directory
1430              supervisor:logfile
1431              supervisor:pidfile
1432              supervisor:childlogdir
1433              supervisor:environment
1434              program:environment
1435              program:stdout_logfile
1436              program:stderr_logfile
1437              program:process_name
1438              program:command
1439
1440        - The ``--environment`` aka ``-b`` option was removed from the list of
1441          available command-line switches to supervisord (use "A=1 B=2
1442          bin/supervisord" instead).
1443
1444        - If the socket filename (the tail-end of the unix:// URL) was
1445          longer than 64 characters, supervisorctl would fail with an
1446          encoding error at startup.
1447
1448        - The ``identifier`` command-line argument was not functional.
1449
1450        - Fixed http://www.plope.com/software/collector/215 (bad error
1451          message in supervisorctl when program command not found on PATH).
1452
1453        - Some child processes may not have been shut down properly at
1454          supervisor shutdown time.
1455
1456        - Move to ZPL-derived (but not ZPL) license available from
1457          http://www.repoze.org/LICENSE.txt; it's slightly less restrictive
1458          than the ZPL (no servicemark clause).
1459
1460        - Spurious errors related to unclosed files ("bad file descriptor",
1461          typically) were evident at supervisord "reload" time (when using
1462          the "reload" command from supervisorctl).
1463
1464        - We no longer bundle ez_setup to bootstrap setuptools installation.
1465
1466        3.0a2 (2007-08-24)
1467        ------------------
1468
1469        - Fixed the README.txt example for defining the supervisor RPC
1470          interface in the configuration file.  Thanks to Drew Perttula.
1471
1472        - Fixed a bug where process communication events would not have the
1473          proper payload if the payload data was very short.
1474
1475        - when supervisord attempted to kill a process with SIGKILL after
1476          the process was not killed within "stopwaitsecs" using a "normal"
1477          kill signal, supervisord would crash with an improper
1478          AssertionError.  Thanks to Calvin Hendryx-Parker.
1479
1480        - On Linux, Supervisor would consume too much CPU in an effective
1481          "busywait" between the time a subprocess exited and the time at
1482          which supervisor was notified of its exit status.  Thanks to Drew
1483          Perttula.
1484
1485        - RPC interface behavior change: if the RPC method
1486          "sendProcessStdin" is called against a process that has closed its
1487          stdin file descriptor (e.g. it has done the equivalent of
1488          "sys.stdin.close(); os.close(0)"), we return a NO_FILE fault
1489          instead of accepting the data.
1490
1491        - Changed the semantics of the process configuration ``autorestart``
1492          parameter with respect to processes which move between the RUNNING and
1493          EXITED state.  ``autorestart`` was previously a boolean.  Now it's a
1494          trinary, accepting one of ``false``, ``unexpected``, or ``true``.  If it's
1495          ``false``, a process will never be automatically restarted from the EXITED
1496          state.  If it's ``unexpected``, a process that enters the EXITED state will
1497          be automatically restarted if it exited with an exit code that was not
1498          named in the process config's ``exitcodes`` list.  If it's ``true``, a
1499          process that enters the EXITED state will be automatically restarted
1500          unconditionally.  The default is now ``unexpected`` (it was previously
1501          ``true``).  The readdition of this feature is a reversion of the behavior
1502          change note in the changelog notes for 3.0a1 that asserted we never cared
1503          about the process' exit status when determining whether to restart it or
1504          not.
1505
1506        - setup.py develop (and presumably setup.py install) would fail under Python
1507          2.3.3, because setuptools attempted to import ``splituser`` from urllib2,
1508          and it didn't exist.
1509
1510        - It's now possible to use ``setup.py install`` and ``setup.py develop`` on
1511          systems which do not have a C compiler if you set the environment variable
1512          "NO_MELD3_EXTENSION_MODULES=1" in the shell in which you invoke these
1513          commands (versions of meld3 > 0.6.1 respect this envvar and do not try to
1514          compile optional C extensions when it's set).
1515
1516        - The test suite would fail on Python versions <= 2.3.3 because
1517          the "assertTrue" and "assertFalse" methods of unittest.TestCase
1518          didn't exist in those versions.
1519
1520        - The ``supervisorctl`` and ``supervisord`` wrapper scripts were disused in
1521          favor of using setuptools' ``console_scripts`` entry point settings.
1522
1523        - Documentation files and the sample configuration file are put into
1524          the generated supervisor egg's ``doc`` directory.
1525
1526        - Using the web interface would cause fairly dramatic memory
1527          leakage.  We now require a version of meld3 that does not appear
1528          to leak memory from its C extensions (0.6.3).
1529
1530        3.0a1 (2007-08-16)
1531        ------------------
1532
1533        - Default config file comment documented 10 secs as default for ``startsecs``
1534          value in process config, in reality it was 1 sec.  Thanks to Christoph
1535          Zwerschke.
1536
1537        - Make note of subprocess environment behavior in README.txt.
1538          Thanks to Christoph Zwerschke.
1539
1540        - New "strip_ansi" config file option attempts to strip ANSI escape
1541          sequences from logs for smaller/more readable logs (submitted by
1542          Mike Naberezny).
1543
1544        - The XML-RPC method supervisor.getVersion() has been renamed for
1545          clarity to supervisor.getAPIVersion().  The old name is aliased
1546          for compatibility but is deprecated and will be removed in a
1547          future version (Mike Naberezny).
1548
1549        - Improved web interface styling (Mike Naberezny, Derek DeVries)
1550
1551        - The XML-RPC method supervisor.startProcess() now checks that
1552          the file exists and is executable (Mike Naberezny).
1553
1554        - Two environment variables, "SUPERVISOR_PROCESS_NAME" and
1555          "SUPERVISOR_PROCESS_GROUP" are set in the environment of child
1556          processes, representing the name of the process and group in
1557          supervisor's configuration.
1558
1559        - Process state map change: a process may now move directly from the
1560          STARTING state to the STOPPING state (as a result of a stop
1561          request).
1562
1563        - Behavior change: if ``autorestart`` is true, even if a process exits with
1564          an "expected" exit code, it will still be restarted.  In the immediately
1565          prior release of supervisor, this was true anyway, and no one complained,
1566          so we're going to consider that the "officially correct" behavior from now
1567          on.
1568
1569        - Supervisor now logs subprocess stdout and stderr independently.
1570          The old program config keys "logfile", "logfile_backups" and
1571          "logfile_maxbytes" are superseded by "stdout_logfile",
1572          "stdout_logfile_backups", and "stdout_logfile_maxbytes".  Added
1573          keys include "stderr_logfile", "stderr_logfile_backups", and
1574          "stderr_logfile_maxbytes".  An additional "redirect_stderr" key is
1575          used to cause program stderr output to be sent to its stdout
1576          channel.  The keys "log_stderr" and "log_stdout" have been
1577          removed.
1578
1579        - ``[program:x]`` config file sections now represent "homgeneous process
1580          groups" instead of single processes.  A "numprocs" key in the section
1581          represents the number of processes that are in the group.  A "process_name"
1582          key in the section allows composition of the each process' name within the
1583          homogeneous group.
1584
1585        - A new kind of config file section, ``[group:x]`` now exists, allowing users
1586          to group heterogeneous processes together into a process group that can be
1587          controlled as a unit from a client.
1588
1589        - Supervisord now emits "events" at certain points in its normal
1590          operation.  These events include supervisor state change events,
1591          process state change events, and "process communication events".
1592
1593        - A new kind of config file section ``[eventlistener:x]`` now exists.  Each
1594          section represents an "event listener pool", which is a special kind of
1595          homogeneous process group.  Each process in the pool is meant to receive
1596          supervisor "events" via its stdin and perform some notification (e.g. send
1597          a mail, log, make an http request, etc.)
1598
1599        - Supervisord can now capture data between special tokens in
1600          subprocess stdout/stderr output and emit a "process communications
1601          event" as a result.
1602
1603        - Supervisor's XML-RPC interface may be extended arbitrarily by programmers.
1604          Additional top-level namespace XML-RPC interfaces can be added using the
1605          ``[rpcinterface:foo]`` declaration in the configuration file.
1606
1607        - New ``supervisor``-namespace XML-RPC methods have been added:
1608          getAPIVersion (returns the XML-RPC API version, the older
1609          "getVersion" is now deprecated), "startProcessGroup" (starts all
1610          processes in a supervisor process group), "stopProcessGroup"
1611          (stops all processes in a supervisor process group), and
1612          "sendProcessStdin" (sends data to a process' stdin file
1613          descriptor).
1614
1615        - ``supervisor``-namespace XML-RPC methods which previously accepted
1616          ony a process name as "name" (startProcess, stopProcess,
1617          getProcessInfo, readProcessLog, tailProcessLog, and
1618          clearProcessLog) now accept a "name" which may contain both the
1619          process name and the process group name in the form
1620          ``groupname:procname``.  For backwards compatibility purposes,
1621          "simple" names will also be accepted but will be expanded
1622          internally (e.g. if "foo" is sent as a name, it will be expanded
1623          to "foo:foo", representing the foo process within the foo process
1624          group).
1625
1626        - 2.X versions of supervisorctl will work against supervisor 3.0
1627          servers in a degraded fashion, but 3.X versions of supervisorctl
1628          will not work at all against supervisor 2.X servers.
1629
1630        2.2b1 (2007-03-31)
1631        ------------------
1632
1633        - Individual program configuration sections can now specify an
1634          environment.
1635
1636        - Added a 'version' command to supervisorctl.  This returns the
1637          version of the supervisor2 package which the remote supervisord
1638          process is using.
1639
1640        2.1 (2007-03-17)
1641        ----------------
1642
1643        - When supervisord was invoked more than once, and its configuration
1644          was set up to use a UNIX domain socket as the HTTP server, the
1645          socket file would be erased in error.  The symptom of this was
1646          that a subsequent invocation of supervisorctl could not find the
1647          socket file, so the process could not be controlled (it and all of
1648          its subprocesses would need to be killed by hand).
1649
1650        - Close subprocess file descriptors properly when a subprocess exits
1651          or otherwise dies.  This should result in fewer "too many open
1652          files to spawn foo" messages when supervisor is left up for long
1653          periods of time.
1654
1655        - When a process was not killable with a "normal" signal at shutdown
1656          time, too many "INFO: waiting for x to die" messages would be sent
1657          to the log until we ended up killing the process with a SIGKILL.
1658          Now a maximum of one every three seconds is sent up until SIGKILL
1659          time.  Thanks to Ian Bicking.
1660
1661        - Add an assertion: we never want to try to marshal None to XML-RPC
1662          callers.  Issue 223 in the collector from vgatto indicates that
1663          somehow a supervisor XML-RPC method is returning None (which
1664          should never happen), but I cannot identify how.  Maybe the
1665          assertion will give us more clues if it happens again.
1666
1667        - Supervisor would crash when run under Python 2.5 because the
1668          xmlrpclib.Transport class in Python 2.5 changed in a
1669          backward-incompatible way.  Thanks to Eric Westra for the bug
1670          report and a fix.
1671
1672        - Tests now pass under Python 2.5.
1673
1674        - Better supervisorctl reporting on stop requests that have a FAILED
1675          status.
1676
1677        - Removed duplicated code (readLog/readMainLog), thanks to Mike
1678          Naberezny.
1679
1680        - Added tailProcessLog command to the XML-RPC API.  It provides a
1681          more efficient way to tail logs than readProcessLog().  Use
1682          readProcessLog() to read chunks and tailProcessLog() to tail.
1683          (thanks to Mike Naberezny).
1684
1685        2.1b1 (2006-08-30)
1686        ------------------
1687
1688        - "supervisord -h" and "supervisorctl -h" did not work (traceback
1689          instead of showing help view (thanks to Damjan from Macedonia for
1690          the bug report).
1691
1692        - Processes which started successfully after failing to start
1693          initially are no longer reported in BACKOFF state once they are
1694          started successfully (thanks to Damjan from Macdonia for the bug
1695          report).
1696
1697        - Add new 'maintail' command to supervisorctl shell, which allows
1698          you to tail the 'main' supervisor log.  This uses a new
1699          readMainLog xmlrpc API.
1700
1701        - Various process-state-transition related changes, all internal.
1702          README.txt updated with new state transition map.
1703
1704        - startProcess and startAllProcesses xmlrpc APIs changed: instead of
1705          accepting a timeout integer, these accept a wait boolean (timeout
1706          is implied by process' "startsecs" configuration).  If wait is
1707          False, do not wait for startsecs.
1708
1709        Known issues:
1710
1711        - Code does not match state transition map.  Processes which are
1712          configured as autorestarting which start "successfully" but
1713          subsequently die after 'startsecs' go through the transitions
1714          RUNNING -> BACKOFF -> STARTING instead of the correct transitions
1715          RUNNING -> EXITED -> STARTING.  This has no real negative effect,
1716          but should be fixed for correctness.
1717
1718        2.0 (2006-08-30)
1719        ----------------
1720
1721        - pidfile written in daemon mode had incorrect pid.
1722
1723        - supervisorctl: tail (non -f) did not pass through proper error
1724          messages when supplied by the server.
1725
1726        - Log signal name used to kill processes at debug level.
1727
1728        - supervisorctl "tail -f" didn't work with supervisorctl sections
1729          configured with an absolute unix:// URL
1730
1731        - New "environment" config file option allows you to add environment
1732          variable values to supervisord environment from config file.
1733
1734        2.0b1 (2006-07-12)
1735        ------------------
1736
1737        - Fundamental rewrite based on 1.0.7, use distutils (only) for
1738          installation, use ConfigParser rather than ZConfig, use HTTP for
1739          wire protocol, web interface, less lies in supervisorctl.
1740
1741        1.0.7 (2006-07-11)
1742        ------------------
1743
1744        - Don't log a waitpid error if the error value is "no children".
1745
1746        - Use select() against child file descriptor pipes and bump up select
1747          timeout appropriately.
1748
1749        1.0.6 (2005-11-20)
1750        ------------------
1751
1752        - Various tweaks to make run more effectively on Mac OS X
1753          (including fixing tests to run there, no more "error reading
1754          from fd XXX" in logtail output, reduced disk/CPU usage as a
1755          result of not writing to log file unnecessarily on Mac OS).
1756
1757        1.0.5 (2004-07-29)
1758        ------------------
1759
1760        - Short description: In previous releases, managed programs that
1761          created voluminous stdout/stderr output could run more slowly
1762          than usual when invoked under supervisor, now they do not.
1763
1764          Long description: The supervisord manages child output by
1765          polling pipes related to child process stderr/stdout.  Polling
1766          operations are performed in the mainloop, which also performs a
1767          'select' on the filedescriptor(s) related to client/server
1768          operations.  In prior releases, the select timeout was set to 2
1769          seconds.  This release changes the timeout to 1/10th of a second
1770          in order to keep up with client stdout/stderr output.
1771
1772          Gory description: On Linux, at least, there is a pipe buffer
1773          size fixed by the kernel of somewhere between 512 - 4096 bytes;
1774          when a child process writes enough data to fill the pipe buffer,
1775          it will block on further stdout/stderr output until supervisord
1776          comes along and clears out the buffer by reading bytes from the
1777          pipe within the mainloop.  We now clear these buffers much more
1778          quickly than we did before due to the increased frequency of
1779          buffer reads in the mainloop; the timeout value of 1/10th of a
1780          second seems to be fast enough to clear out the buffers of child
1781          process pipes when managing programs on even a very fast system
1782          while still enabling the supervisord process to be in a sleeping
1783          state for most of the time.
1784
1785        1.0.4 or "Alpha 4" (2004-06-30)
1786        -------------------------------
1787
1788        - Forgot to update version tag in configure.py, so the supervisor version
1789          in a3 is listed as "1.0.1", where it should be "1.0.3".  a4 will be
1790          listed as "1.0.4'.
1791
1792        - Instead of preventing a process from starting if setuid() can't
1793          be called (if supervisord is run as nonroot, for example), just log
1794          the error and proceed.
1795
1796        1.0.3 or "Alpha 3" (2004-05-26)
1797        -------------------------------
1798
1799        - The daemon could chew up a lot of CPU time trying to select()
1800          on real files (I didn't know select() failed to block when a file
1801          is at EOF).  Fixed by polling instead of using select().
1802
1803        - Processes could "leak" and become zombies due to a bug in
1804          reaping dead children.
1805
1806        - supervisord now defaults to daemonizing itself.
1807
1808        - 'daemon' config file option and -d/--daemon command-line option
1809          removed from supervisord acceptable options.  In place of these
1810          options, we now have a 'nodaemon' config file option and a
1811          -n/--nodaemon command-line option.
1812
1813        - logtail now works.
1814
1815        - pidproxy changed slightly to reap children synchronously.
1816
1817        - in alpha2 changelist, supervisord was reported to have a
1818          "noauth" command-line option.  This was not accurate.  The way
1819          to turn off auth on the server is to disinclude the "passwdfile"
1820          config file option from the server config file.  The client
1821          however does indeed still have a noauth option, which prevents
1822          it from ever attempting to send authentication credentials to
1823          servers.
1824
1825        - ZPL license added for ZConfig to LICENSE.txt
1826
1827        1.0.2 or "Alpha 2" (Unreleased)
1828        -------------------------------
1829
1830        - supervisorctl and supervisord no longer need to run on the same machine
1831          due to the addition of internet socket support.
1832
1833        - supervisorctl and supervisord no longer share a common configuration
1834          file format.
1835
1836        - supervisorctl now uses a persistent connection to supervisord
1837          (as opposed to creating a fresh connection for each command).
1838
1839        - SRP (Secure Remote Password) authentication is now a supported form
1840          of access control for supervisord.  In supervisorctl interactive mode,
1841          by default, users will be asked for credentials when attempting to
1842          talk to a supervisord that requires SRP authentication.
1843
1844        - supervisord has a new command-line option and configuration file
1845          option for specifying "noauth" mode, which signifies that it
1846          should not require authentication from clients.
1847
1848        - supervisorctl has a new command-line option and configuration
1849          option for specifying "noauth" mode, which signifies that it
1850          should never attempt to send authentication info to servers.
1851
1852        - supervisorctl has new commands: open: opens a connection to a new
1853          supervisord; close: closes the current connection.
1854
1855        - supervisorctl's "logtail" command now retrieves log data from
1856          supervisord's log file remotely (as opposed to reading it
1857          directly from a common filesystem).  It also no longer emulates
1858          "tail -f", it just returns <n> lines of the server's log file.
1859
1860        - The supervisord/supervisorctl wire protocol now has protocol versioning
1861          and is documented in "protocol.txt".
1862
1863        - "configfile" command-line override -C changed to -c
1864
1865        - top-level section name for supervisor schema changed to 'supervisord'
1866          from 'supervisor'
1867
1868        - Added 'pidproxy' shim program.
1869
1870        Known issues in alpha 2:
1871
1872        - If supervisorctl loses a connection to a supervisord or if the
1873          remote supervisord crashes or shuts down unexpectedly, it is
1874          possible that any supervisorctl talking to it will "hang"
1875          indefinitely waiting for data.  Pressing Ctrl-C will allow you
1876          to restart supervisorctl.
1877
1878        - Only one supervisorctl process may talk to a given supervisord
1879          process at a time.  If two supervisorctl processes attempt to talk
1880          to the same supervisord process, one will "win" and the other will
1881          be disconnected.
1882
1883        - Sometimes if a pidproxy is used to start a program, the pidproxy
1884          program itself will "leak".
1885
1886        1.0.0 or "Alpha 1" (Unreleased)
1887        -------------------------------
1888
1889        Initial release.
1890
1891Platform: UNKNOWN
1892Classifier: Development Status :: 5 - Production/Stable
1893Classifier: Environment :: No Input/Output (Daemon)
1894Classifier: Intended Audience :: System Administrators
1895Classifier: Natural Language :: English
1896Classifier: Operating System :: POSIX
1897Classifier: Topic :: System :: Boot
1898Classifier: Topic :: System :: Monitoring
1899Classifier: Topic :: System :: Systems Administration
1900Classifier: Programming Language :: Python
1901Classifier: Programming Language :: Python :: 2
1902Classifier: Programming Language :: Python :: 2.7
1903Classifier: Programming Language :: Python :: 3
1904Classifier: Programming Language :: Python :: 3.4
1905Classifier: Programming Language :: Python :: 3.5
1906Classifier: Programming Language :: Python :: 3.6
1907Classifier: Programming Language :: Python :: 3.7
1908Classifier: Programming Language :: Python :: 3.8
1909Provides-Extra: testing
1910