* Mon Apr 25 2022 firstname.lastname@example.org
- version update to 4.2.4
- Fixed a bug where the ``--identifier`` command line argument was ignored.
It was broken since at least 3.0a7 (released in 2009) and probably earlier.
Patch by Julien Le Cléach.
- Fixed a race condition where an ``rpcinterface`` extension that subscribed
to events would not see the correct process state if it accessed the
the ``state`` attribute on a ``Subprocess`` instance immediately in the
event callback. Patch by Chao Wang.
- Added the ``setuptools`` package to the list of dependencies in
``setup.py`` because it is a runtime dependency. Patch by Louis Sautier.
- The web interface will now return a 404 Not Found response if a log file
is missing. Previously, it would return 410 Gone. It was changed because
410 is intended to mean that the condition is likely to be permanent. A
log file missing is usually temporary, e.g. a process that was never started
will not have a log file but will have one as soon as it is started.
- Fixed a bug where ``supervisord`` could crash if a subprocess exited
immediately before trying to kill it.
- Fixed a bug where the ``stdout_syslog`` and ``stderr_syslog`` options
of a ``[program:x]`` section could not be used unless file logging for
the same program had also been configured. The file and syslog options
can now be used independently. Patch by Scott Stroupe.
- Fixed a bug where the ``logfile`` option in the ``[supervisord]``
section would not log to syslog when the special filename of
``syslog`` was supplied, as is supported by all other log filename
options. Patch by Franck Cuny.
- Fixed a bug where environment variables defined in ``environment=``
in the ``[supervisord]`` section or a ``[program:x]`` section could
not be used in ``%(ENV_x)s`` expansions. Patch by MythRen.
- The ``supervisorctl signal`` command now allows a signal to be sent
when a process is in the ``STOPPING`` state. Patch by Mike Gould.
- ``supervisorctl`` and ``supervisord`` now print help when given ``-?``
in addition to the existing ``-h``/``--help``.
- Fixed a bug on Python 3 where a network error could cause ``supervisord``
to crash with the error ``<class 'TypeError'>:can't concat str to bytes``.
Patch by Vinay Sajip.
- Fixed a bug where a test would fail on systems with glibc 2.3.1 because
the default value of SOMAXCONN changed.
- When ``supervisord`` is run in the foreground, a new ``--silent`` option
suppresses the main log from being echoed to ``stdout`` as it normally
would. Patch by Trevor Foster.
- Parsing ``command=`` now supports a new expansion, ``%(numprocs)d``, that
expands to the value of ``numprocs=`` in the same section. Patch by
- Web UI buttons no longer use background images. Patch by Dmytro Karpovych.
- The Web UI now has a link to view ``tail -f stderr`` for a process in
addition to the existing ``tail -f stdout`` link. Based on a
patch by OuroborosCoding.
- The HTTP server will now send an ``X-Accel-Buffering: no`` header in
logtail responses to fix Nginx proxy buffering. Patch by Weizhao Li.
- When ``supervisord`` reaps an unknown PID, it will now log a description
of the ``waitpid`` status. Patch by Andrey Zelenchuk.
- Fixed a bug introduced in 4.0.3 where ``supervisorctl tail -f foo | grep bar``
would fail with the error ``NoneType object has no attribute 'lower'``. This
only occurred on Python 2.7 and only when piped. Patch by Slawa Pidgorny.
- python-mock is not required for build
* Wed Nov 24 2021 email@example.com
- Added hardening to systemd service(s) (bsc#1181400). Modified:
* Sun Dec 22 2019 firstname.lastname@example.org
- Add python2-setuptools to the runtime-requirements
* Tue Mar 26 2019 email@example.com
- Remove not needed build-dependencies
- Add rclink
* Thu Apr 16 2020 firstname.lastname@example.org
- version update to 4.1.0
- Fixed a bug on Python 3 only where logging to syslog did not work and
would log the exception ``TypeError: a bytes-like object is required, not 'str'``
to the main ``supervisord`` log file. Patch by Vinay Sajip and Josh Staley.
- Fixed a Python 3.8 compatibility issue caused by the removal of
``cgi.escape()``. Patch by Mattia Procopio.
- The ``meld3`` package is no longer a dependency. A version of ``meld3``
is now included within the ``supervisor`` package itself.
- Fixed a bug where ``supervisorctl tail <name> stdout`` would actually tail
``stderr``. Note that ``tail <name>`` without the explicit ``stdout``
correctly tailed ``stdout``. The bug existed since 3.0a3 (released in
2007). Patch by Arseny Hofman.
- Improved the warning message added in 4.0.3 so it is now emitted for
both ``tail`` and ``tail -f``. Patch by Vinay Sajip.
- CVE-2019-12105. Documentation addition only, no code changes. This CVE
states that ``inet_http_server`` does not use authentication by default
(`details <https://github.com/Supervisor/supervisor/issues/1245>`_). Note that
``inet_http_server`` is not enabled by default, and is also not enabled
in the example configuration output by ``echo_supervisord_conf``. The
behavior of the ``inet_http_server`` options have been correctly documented,
and have not changed, since the feature was introduced in 2006. A new
`warning message <https://github.com/Supervisor/supervisor/commit/4e334d9cf2a1daff685893e35e72398437df3dcb>`_
was added to the documentation.
- Fixed an issue on Python 2 where running ``supervisorctl tail -f <name>``
would fail with the message
``Cannot connect, error: <type 'exceptions.UnicodeEncodeError'>`` where it
may have worked on Supervisor 3.x. The issue was introduced in Supervisor
4.0.0 due to new bytes/strings conversions necessary to add Python 3 support.
For ``supervisorctl`` to correctly display logs with Unicode characters, the
terminal encoding specified by the environment must support it. If not, the
``UnicodeEncodeError`` may still occur on either Python 2 or 3. A new
warning message is now printed if a problematic terminal encoding is
detected. Patch by Vinay Sajip.
- Fixed a bug where inline comments in the config file were not parsed
correctly such that the comments were included as part of the values.
This only occurred on Python 2, and only where the environment had an
extra ``configparser`` module installed. The bug was introduced in
Supervisor 4.0.0 because of Python 2/3 compatibility code that expected
a Python 2 environment to only have a ``ConfigParser`` module.
- Fixed an issue on Python 3 where an ``OSError: [Errno 29] Illegal seek``
would occur if ``logfile`` in the ``[supervisord]`` section was set to
a special file like ``/dev/stdout`` that was not seekable, even if
``logfile_maxbytes = 0`` was set to disable rotation. The issue only
affected the main log and not child logs. Patch by Martin Falatic.
- Support for Python 3 has been added. On Python 3, Supervisor requires
Python 3.4 or later. Many thanks to Vinay Sajip, Scott Maxwell, Palm Kevin,
Tres Seaver, Marc Abramowitz, Son Nguyen, Shane Hathaway, Evan Andrews,
and Ethan Hann who all made major contributions to the Python 3 porting
effort. Thanks also to all contributors who submitted issue reports and
patches towards this effort.
- Support for Python 2.4, 2.5, and 2.6 has been dropped. On Python 2,
Supervisor now requires Python 2.7.
- The ``supervisor`` package is no longer a namespace package.
- The behavior of the config file expansion ``%(here)s`` has changed. In
previous versions, a bug caused ``%(here)s`` to always expand to the
directory of the root config file. Now, when ``%(here)s`` is used inside
a file included via ``[include]``, it will expand to the directory of
that file. Thanks to Alex Eftimie and Zoltan Toth-Czifra for the patches.
- The default value for the config file setting ``exitcodes=``, the expected
exit codes of a program, has changed. In previous versions, it was ``0,2``.
This caused issues with Golang programs where ``panic()`` causes the exit
code to be ``2``. The default value for ``exitcodes`` is now ``0``.
- An undocumented feature where multiple ``supervisorctl`` commands could be
combined on a single line separated by semicolons has been removed.
- ``supervisorctl`` will now set its exit code to a non-zero value when an
error condition occurs. Previous versions did not set the exit code for
most error conditions so it was almost always 0. Patch by Luke Weber.
- Added new ``stdout_syslog`` and ``stderr_syslog`` options to the config
* Tue Mar 26 2019 Martin Hauke <email@example.com>
- Remove not needed build-dependencies
- Add rclink
* Thu Jan 24 2019 firstname.lastname@example.org
- Update to version 3.3.5
Lots of changes since 3.1.3
- Package cleanup
- Drop obsolete sysvinit stuff
- Remove source files
- Remove patches:
* interpreter.patch (not longer needed)
* Thu Apr 16 2015 email@example.com
- Update to version 3.1.3
- 3.1.3 (2014-10-28)
- Fixed an XML-RPC bug where the ElementTree-based parser handled strings
like ``<value><string>hello</string></value>`` but not strings like
``<value>hello</value>``, which are valid in the XML-RPC spec. This
fixes compatibility with the Apache XML-RPC client for Java and
possibly other clients.
- 3.1.2 (2014-09-07)
- Fixed a bug where ``tail group:*`` in ``supervisorctl`` would show a 500
Internal Server Error rather than a BAD_NAME fault.
- Fixed a bug where the web interface would show a 500 Internal Server Error
instead of an error message for some process start faults.
- Removed medusa files not used by Supervisor.
- Fixed a bug where ``supervisorctl tail -f name`` output would stop if log
rotation occurred while tailing.
- Prevent a crash when a greater number file descriptors were attempted to be
opened than permitted by the environment when starting a bunch of programs.
Now, instead a spawn error is logged.
- Compute "channel delay" properly, fixing symptoms where a supervisorctl start
command would hang for a very long time when a process (or many processes)
are spewing to their stdout or stderr. See comments attached to
- Added docs/conf.py, docs/Makefile, and supervisor/scripts/*.py to
the release package.
- 3.1.0 (2014-07-29)
- The output of the ``start``, ``stop``, ``restart``, and ``clear`` commands
in ``supervisorctl`` has been changed to be consistent with the ``status``
command. Previously, the ``status`` command would show a process like
``foo:foo_01`` but starting that process would show ``foo_01: started``
(note the group prefix ``foo:`` was missing). Now, starting the process
will show ``foo:foo_01: started``. Suggested by Chris Wood.
- The ``status`` command in ``supervisorctl`` now supports group name
syntax: ``status group:*``.
- The process column in the table output by the ``status`` command in
``supervisorctl`` now expands to fit the widest name.
- The ``update`` command in ``supervisorctl`` now accepts optional group
names. When group names are specified, only those groups will be
updated. Patch by Gary M. Josack.
- Tab completion in ``supervisorctl`` has been improved and now works for
more cases. Thanks to Mathieu Longtin and Marc Abramowitz for the patches.
- Attempting to start or stop a process group in ``supervisorctl`` with the
``group:*`` syntax will now show the same error message as the ``process``
syntax if the name does not exist. Previously, it would show a Python
exception. Patch by George Ang.
- Added new ``PROCESS_GROUP_ADDED`` and ``PROCESS_GROUP_REMOVED`` events.
These events are fired when process groups are added or removed from
Supervisor's runtime configuration when using the ``add`` and ``remove``
commands in ``supervisorctl``. Patch by Brent Tubbs.
- Stopping a process in the backoff state now changes it to the stopped
state. Previously, an attempt to stop a process in backoff would be
ignored. Patch by Pascal Varet.
- The ``directory`` option is now expanded separately for each process in
a homogeneous process group. This allows each process to have its own
working directory. Patch by Perttu Ranta-aho.
- Removed ``setuptools`` from the ``requires`` list in ``setup.py`` because
it caused installation issues on some systems.
- Fixed a bug in Medusa where the HTTP Basic authorizer would cause an
exception if the password contained a colon. Thanks to Thomas Guttler
for reporting this issue.
- Fixed an XML-RPC bug where calling supervisor.clearProcessLogs() with a
name like ``group:*`` would cause a 500 Internal Server Error rather than
returning a BAD_NAME fault.
- Fixed a hang that could occur in ``supervisord`` if log rotation is used
and an outside program deletes an active log file. Patch by Magnus Lycka.
- A warning is now logged if a glob pattern in an ``[include]`` section does
not match any files. Patch by Daniel Hahler.
- regenerated sample config (but kept volatile dir instead of /tmp)
- add %pre service, as hinted by rpmlint
- mv tmpfile conf to /usr/lib/tmpfiles.d/
* Tue Apr 14 2015 firstname.lastname@example.org
- deal with nowadays volatile /var/run directory
- create and include /etc/supervisord.d
- run supervisord with recommended -c option
* Sun Dec 22 2013 email@example.com
- Add python-xml as a depedency, it provides the libraries that used
to be a part of python-elementtree
* Sun Dec 22 2013 firstname.lastname@example.org
- Remove dependency on python-elementtree; none package provides it
* Sat Nov 09 2013 email@example.com
- Update to version 3.0 final
+ Parsing the config file will now fail with an error message if a
process or group name contains characters that are not compatible
with the eventlistener protocol.
+ Fixed a bug where the tail -f command in supervisorctl would fail if
the combined length of the username and password was over 56 characters.
+ Reading the config file now gives a separate error message when the
config file exists but can't be read. Previously, any error reading the
file would be reported as "could not find config file".
+ Fixed an XML-RPC bug where array elements after the first would be
ignored when using the ElementTree-based XML parser.
+ Fixed the usage message output by supervisorctl to show the correct
default config file path.
- Add systemd support for openSUSE >= 12.3
- Fix sysvinit support
+ add missing %post section
+ add missing Requires(pre): insserv_prereq
+ use correct init script name in %postun/preun
* Thu Oct 24 2013 firstname.lastname@example.org
- Require python-setuptools instead of distribute (upstreams merged)
* Mon Sep 09 2013 email@example.com
- Fixed runtime requirement of python-elementtree. ElementTree has been
merged into python 2.5. Hence there's not need to require it for recent
versions of SLE/openSUSE.
* Wed Dec 07 2011 firstname.lastname@example.org
- Update to 3.0a12:
- Released to replace a broken 3.0a11 package where non-Python files
were not included in the package.
- Aditional changes from 3.0a11:
- The pid command in supervisorctl can now be used to retrieve the PIDs
of child processes. See help pid. Patch by Gregory Wisniewski.
- Added a new host_node_name expansion that will be expanded to the
value returned by Python's platform.node (see
http://docs.python.org/library/platform.html#platform.node). Patch by
- Fixed a bug in the web interface where pages over 64K would be
truncated. Thanks to Drew Perttula and Timothy Jones for reporting this.
- Renamed README.txt to README.rst so GitHub renders the file as
- The XML-RPC server is now compatible with clients that do not send
empty <params> when there are no parameters for the method call.
Thanks to Johannes Becker for reporting this.
- Fixed supervisorctl --help output to show the correct program name.
- The behavior of the configuration options minfds and minprocs has
changed. Previously, if a hard limit was less than minfds or minprocs,
supervisord would unconditionally abort with an error. Now, supervisord
will attempt to raise the hard limit. This may succeed if supervisord
is run as root, otherwise the error is printed as before. Patch by
- Add a boolean program option killasgroup, defaulting to false, if
true when resorting to send SIGKILL to stop/terminate the process
send it to its whole process group instead to take care of possible
children as well and not leave them behind. Patch by Samuele Pedroni.
- Environment variables may now be used in the configuration file for
options that support string expansion. Patch by GitHub user "silver-".
- Fixed a race condition where supervisord might not act on a signal
sent to it. Thanks to Adar Dembo for reporting the issue and supplying
the initial patch.
- Updated the output of echo_supervisord_conf to fix typos and
improve comments. Thanks to Jens Rantil for noticing these.
- Removed docdir.patch, no more needed.
* Thu Apr 21 2011 email@example.com
- Add %preun and %postun sections in spec file.
* Thu Apr 21 2011 firstname.lastname@example.org
- Update to 3.0a10:
- Fixed the stylesheet of the web interface so the footer line won't overlap
a long process list. Thanks to Derek DeVries for the patch.
- Allow rpc interface plugins to register new events types.
- Bug fix for FCGI sockets not getting cleaned up when the ``reload`` command
is issued from supervisorctl. Also, the default behavior has changed for
FCGI sockets. They are new closed whenever the number ofrunning processes
in a group hits zero. Previously, the sockets were kept open unless a
group-level stop command was issued.
- Better error message when HTTP server cannot reverse-resolve a hostname to
an IP address. Previous behavior: show a socket error. Current behavior:
spit out a suggestion to stdout.
- Environment variables set via ``environment=`` value within
``[supervisord]`` section had no effect. Thanks to Wyatt Baldwin
for a patch.
- Fix bug where stopping process would cause process output that happened
after the stop request was issued to be lost. See
- Moved 2.X change log entries into ``HISTORY.txt``.
- Converted ``CHANGES.txt`` and ``README.txt`` into proper ReStructuredText
and included them in the ``long_description`` in ``setup.py``.
- Added a tox.ini to the package (run via ``tox`` in the package dir). Tests
supervisor on multiple Python versions.
- Replace python-setuptools by python-distribute in spec file.
* Wed Sep 22 2010 email@example.com
- Update to 3.0a9;
- Created example config file.
* Mon Jun 21 2010 firstname.lastname@example.org
- Initial package (3.0a8) for openSUSE.