TODO.txt 4.1 KB

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