TODO.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. - Supervisorctl tab completion and history.
  2. - Supervisorctl "debug" command (communicate with a process over its stdin).
  3. - Allow supervisorctl's tail -f to work over unix domain socket.
  4. - Allow effective user to switch to a particular group instead of
  5. defaulting to the user's primary group:
  6. http://www.plope.com/software/collector/233.
  7. - Allow sockchown group only: http://www.plope.com/software/collector/214
  8. - Change license to http://dist.repoze.org/LICENSE.txt (same license,
  9. just no "Zope" anywhere).
  10. - Implement event max_retry counter that means "after X retries of a
  11. rejected event, go into FATAL state".
  12. - FATAL state for supervisor.
  13. - When we try to clear the main log file and we get an IOError or an
  14. OSError (clearLog)
  15. - When we attempt to remove a process log file via os.remove (or
  16. equivalent all into handlers) and we get an IOError or an OSError
  17. (clearProcessLog)
  18. - When we try to kill a process and the os.kill command raises an
  19. exception (stopProcess)
  20. - Generalize eventlistener request/response protocol (wrap OK/FAIL in
  21. RESULT envelope) so we can use it for more specialized
  22. communications, e.g.:
  23. The listener would return 'RESULT %s\n%s' (len(result), result).
  24. For event listeners, the "result" would be one of "OK" or "FAIL".
  25. For a monitor process, it would be some serialization of the monitor
  26. data (or maybe a failure token).
  27. So an event listener conversation which transitions from
  28. ACKNOWLEDGED to READY to BUSY back to ACKNOWLEDGED and to READY
  29. again might go something like this:
  30. -> READY\n
  31. <- SUPERVISOR3.0 PROCESS_COMMUNICATION_STDOUT 30 22\n
  32. <- process_name: foo\ngroup_name: bar\nThis is the data that was sent between the tags
  33. -> RESULT 2\nOK
  34. -> READY\n
  35. An equivalent monitor process conversation might look like:
  36. -> READY\n
  37. <- SUPERVISOR3.0 MONITOR_QUERY 30 20\n
  38. <- pids: 2601 2602 2603
  39. -> RESULT 10672\n<... big mess o' XML maybe ...>
  40. -> READY\n
  41. Once this works, extend the eventlistener configuration to accept a
  42. "handler=" parameter, e.g. "handler=supervisor.process.stdhandler"
  43. (the default) or "handler=mypackage.myhandler". Handlers will
  44. accept two arguments: one named "event" which represents the event,
  45. and the other named "response", which represents the listener's
  46. response to the event. A handler either executes successfully or
  47. raises an exception. If it raises an exception, the event will be
  48. rebuffered. If it does not, the event is considered successfully
  49. processed. A handler's return value is ignored. Writing a handler
  50. is a "in case of emergency break glass" sort of thing.
  51. The 'standard' eventlistener handler will essentially do nothing if
  52. it receives an "OK" and will raise an exception if it receives a
  53. "FAIL" (emulating the current behavior). A custom monitor process
  54. handler, on the other hand, might restart a process if it detected
  55. one was using too much memory, or would raise an exception if the
  56. serialization returned indicated failure.
  57. - General speed improvement wrangling:
  58. - Play around with creating a select trigger file descriptor for
  59. each event pool. Maybe when an event is accepted by the pool,
  60. write to the file descriptor. This will cause select to time out
  61. and fall through. In an asyncore dispatcher represented by the
  62. file descriptor, attempt to dispatch the event.
  63. - Fix CVS so not all checkins come from "chrism".
  64. - Support stopping and starting groups in web interface.
  65. - Support operations against both stderr and stdout logs within web
  66. interface.
  67. - Revisit test_startProcessGroup and test_startAllProcesses (see XXX
  68. comment about ordering).
  69. - Address outstanding collector issues.
  70. - http://swapoff.org/wiki/blog/2007-09-09--distutils-support-for-a-workingenv-sandbox
  71. - We *might* be able to delay shutdown until all buffered events have
  72. been processed (or a timeout has been reached).
  73. - Web interface:
  74. - Support POST requests.
  75. - Unit tests for meld classes and ui server.
  76. - Meta-refresh on tail page.
  77. - Expat error on Jens' system running slapd as root after reload.
  78. - Unit tests for log rotation.
  79. - Command-line arg tests.
  80. - Log logtail requests.
  81. - Provide a way to get the supervisord pid from supervisorctl/web interface.