Starting in this release, you can now place a Waiting job on hold. If a job is placed on hold, it will not run during the current day even if all its dependencies are met. The only way to make it run as normal is if you first release the hold off the job.
The taskforestd web server now supports the default_time_zone option. This new configuration option will control how times are displayed in the 'logs' page, when the time zone in which the job ran is not known.
This version now gracefully handles the case where a job is marked for rerun and then removed from the Family file before it has the chance to rerun.
If a job fails, its status line on the web page is now colored.
The web site now prunes out carriage returns from job files. This would cause interpreted scripts to fail because the '#!' line contained a \r.
This version fixes a few test cases that wouldn't run properly during certain times of the day.
You can now have a job in one Family depend on the completion of a job in another Family. This allows you to have one Family depend on another.
For example, job J2 in Family F2 can wait on Job J1 in Family F1 by specifying the dependency like this:
# This is in the F2 Family file
J1::F1()
J2()
For more information, check out the jobs and families configuration documentation.
There was an unnecessary call to 'use Date::Calc' in Calendar.pm. I didn't notice it, because I have it installed. It is not being used. It may cause tests to fail. I have removed the line.
TaskForest now supports calendars. A calendar is a set of rules that defines on what days a job may run. Each rule can may or may not conclusively determine whether or not a Family should run today. The rules are evaluated in the order in which they are specified. The last rule that conclusively determines whether of not a Family should run wins, in the case of conflicting rules. If none of the rules is conclusive, then the Family will not run today. You can set rules to specify certain dates or ranges of dates, or specific days, like "third friday of every month."
For more information, check out the calendars documentation.
We've also added a new FAQ page.
This release introduces the concept of tokens. A token is a new kind of dependency. If a job depends on a token, it must acquire a free token before it can run, or wait for another job to release a token after completion. Since there is a finite set of tokens, you can use tokens to prevent too many jobs from running at the same time.
For example, if there are 20 jobs that rely on token T, but only 5 instances of the token, only a maximum of 5 of those jobs may run at the same time.
This release also formalizes the way Families with foreign time zones are handled. This allows you to 'time shift' your family, essentially allowing your family to run for 24 hours in a later timezone. This shifts the end of day towads the end of the family's running time.
This release fixes a nasty bug where Family files were not being parsed properly if the files were in DOS format (with CRLF endings, instead of just LF). Unfortunately, most web browsers save textarea text with CRLF, so a Family file that was originally in Unix format (LF) could wind up being in DOS (CRLF) format if you edited it via the website.
New in this version is the ability to release all dependencies from a job. This makes the job available to run immediately, regardless of how many jobs it is supposed to wait for, or what time dependency it has. Releasing a job effectively changes its status from 'Waiting' to 'Ready.' This option is only available to jobs that are currently in the 'Waiting' state.
Fixed a bug in rerun and mark, when used with --cascade or --dependents_only.
For details, please see the Change log.
Minor bug fixes and documentation changes
For a full list of changes, please see the Change log.
All of the changes in these releases are related to the website. The layout has been changed so that wide tables are more easily displayed. Online documentation has been added. Jobs can now be rerun and marked directly from the status and log directories.
The 'Cache-Control: Public' HTTP response header was added to allow Firefox 3 to cache SSL pages which it does not do by default. This greatly improves website performance if you're using Firefox 3. Firefox 2 does not support the Cache-Control response header, so the website will be slower if you're using SSL and Firefox 2 or earlier.
For a full list of changes, please see the Change log.
The major change in this release is the addition of an alternative run wrapper script called run_with_log. It performs the same functions as the original wrapper, and also creates a log file that captures both STDOUT and STDERR of the job being run.
On the website you can now display the log file of any running or completed job, by clicking on the displayed status of the job. The RESTful web service also supports this. A couple of entries have also been added to the HOWTO section of the documentation.
To see an example of this, click the 'Play' button on the video to the right. (Flash support required)
You can download the latest release here.