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