supervisor / TODO.txt

- Supervisorctl tab completion and history.

- Supervisorctl "debug" command (communicate with a process over its stdin).

- Allow effective user to switch to a particular group instead of
  defaulting to the user's primary group:

- Allow sockchown group only:

- Implement event max_retry counter that means "after X retries of a
  rejected event, go into FATAL state".

- FATAL state for supervisor.

   - When we try to clear the main log file and we get an IOError or an
     OSError (clearLog)

   - When we attempt to remove a process log file via os.remove (or
     equivalent all into handlers) and we get an IOError or an OSError

   - When we try to kill a process and the os.kill command raises an
     exception (stopProcess)
   - If eventlisteners repeatedly reject (or crash on) an event, causing
     the event to be rebuffered above a reasonable threshold.

- General speed improvement wrangling:

  - Play around with creating a select trigger file descriptor for
    each event pool.  Maybe when an event is accepted by the pool,
    write to the file descriptor.  This will cause select to time out
    and fall through.  In an asyncore dispatcher represented by the
    file descriptor, attempt to dispatch the event.

- Revisit test_startProcessGroup and test_startAllProcesses (see XXX
  comment about ordering).

- Address outstanding collector issues.

- We *might* be able to delay shutdown until all buffered events have
  been processed (or a timeout has been reached).

- Web interface:

   - Unit tests for meld classes and ui server.

   - Meta-refresh on tail page.

   - Organize processes by group and allow groups to be started/stopped.

   - Support operations against both stderr and stdout logs.
   - Allow a supervisorctl-like command line through the web interface.

   - Display more information about Supervisor (identification, pid, etc.)

- Expat error on Jens' system running slapd as root after reload.

- Unit tests for log rotation.

- Command-line arg tests.

- Provide a way to get the supervisord pid from supervisorctl/web interface.