| | 1 | = Task Rewrite of JobQueue = |
| | 2 | This is a list of goals for the rewrite of the JobQueue. |
| | 3 | |
| | 4 | == MythSystem == |
| | 5 | * Expand myth_system to a full featured class, to replace existing uses of myth_system, popen, and QProcess. |
| | 6 | * Support both direct execution, and execution through bourne shell. |
| | 7 | * Support input and output pipes, as well as buffered output (for 64KB pipe limit) managed by the reaper. |
| | 8 | * Allow independent timeouts for wait call and automatic termination. |
| | 9 | * (optional) Expand reaper to pull CPU usage. |
| | 10 | * (optional) Allow CPU time limits on processes in addition to real time limits. |
| | 11 | |
| | 12 | == JobQueue == |
| | 13 | * Move user job definition out of `settings` table and into dedicated table, to allow an arbitrary amount of user jobs. |
| | 14 | * Allow per-machine, per-command time constraints for jobs to run between, with the option to forcefully terminate when the run window has closed. |
| | 15 | * Remove special handling of transcode and commflag jobs. Each transcode profile would be given an independent command, and any custom status updates should be performed by the external command. |
| | 16 | * Set master backend as a job scheduler, doling out tasks to available connected machines. The existing system is effectively a 'free-for-all'. |
| | 17 | * (optional) Migrate mythfilldatabase and any other external 'housekeeping' processes to the jobqueue. |
| | 18 | * (optional) Improve support for use of jobqueue in MythVideo, and other non-recording related tasks. |
| | 19 | * (optional) Allow maximum CPU time limits, and termination of idle tasks, to prevent deadlocked tasks. |
| | 20 | * (optional) Allow automatic scaling of concurrent jobqueue tasks. Preferably this would run properly without configuration, and can track both CPU and IO usage. |
| | 21 | * (very optional) Create repository for job scripts, similar to the new theme downloader. |