Revision history for Perl extension LSF. 0.1 Mon Feb 18 12:10:31 2002 First release. 0.2 Wed Apr 03 10:03:25 2002 Second release. Includes LSF::JobManager 0.21 Thu Apr 04 10:40:57 2002 Simplified the test suite. A couple of things have been superceeded by the addition of LSF::JobManager (and i still need to write a proper test suite) 0.3 Thu Apr 04 17:20:55 Now checks the version of LSF at startup. If it is version 4 then the stdout/stderr of the bsub command is swapped. Required module System2 has problems when called in a BEGIN block so i have switched to IPC::Run 0.4 Sun Apr 08 19:53:02 Errors can now be thrown via the RaiseError directive / class method. The printing of the LSF command line stdout / stderr is separated out and controlled by the PrintOutput and PrintError directives / class methods 0.5 Fri Jul 19 11:05:17 LSF::JobInfo is now defunct. The information obtained from the bjobs command is expunged from the LSF logs far too quickly to be reliably available in a long running batch environment. Replacing it is LSF::JobHistory which calls and parses the bhist command. Removed the jobs_with_status method from the LSF::JobManager module since this didn't have a good rationale behind it and the exit status is now obtainable from the LSF::JobHistory object. Added a clear method to the LSF::JobManager class so that the jobs in a job manager can be cleared and it can be reused. Added a history method to the LSF::Job class so that an LSF::JobHistory object can be obtained for a job. Removed the info method from the LSF::Job class The LSF::JobManager->wait_all_children method now uses LSF::JobHistory to pre-cache the results of the bhist command for each job. There are hugely significant performance benefits to calling a single bhist command line for all jobs as opposed to once for each job. 0.6 Thu Aug 15 12:58:10 Added a test for the presense of the LSF executables into Makefile.PL This way both naive users and the automatic testing service on cpan won't try to 'make' the module without the executables being present. 0.7 Tues Oct 10 9:28:44 Redesigned the LSF::JobManager::wait_all_children method. There was a flaw in that you could move each job in the manager to the top of its queue (via the LSF::Job::top method) but the pseudo-job that block waits for these to finish could not also be moved to the top of the queue. Thus in a queue with a lot of non-dependant jobs also submitted the pseudo-job would have to wait for all of these to complete before it did. The workaround is a new method LSF::Job->submit_top that automatically submits a job and then moves it to the top of its queue. Added a work around for another flaw. If you submit a LOT of jobs then the dependancy expression generated by LSF::JobManager->wait_all_children will be greater than the shell arg limit and the command line will fail. LSF::JobManager->wait_all_children now can accept a single argument which is a dependancy expression. This is used in place of the autogenerated expression Thus jobs can be submitted with a Job Name flag ( -J jobname ) and then a dependancy provided that is for all jobs with that name e.g. "ended(/jobname*)" Added a second syntax to LSF::JobHistory->new. If the first argument is an array ref then this is taken to be an array of parameters. All other arguments are taken to be job id's. The bhist command line then constructed is passed to xargs and the job id's are passed to it via stdin. This gets around the shell arg limit problem when LSF::JobManager tries to query the exit status of its contained jobs. Removed a spurious 'use LSF::JobInfo' from LSF::Job that was causing it to fail in the 'make test' stage. 0.8 Weds Oct 11 13:24:13 The LSF::JobHistory class did not correctly query LSF for completed jobs (fixed) 0.9 Fri Oct 25 12:02:19 The wait_all_children method of the LSF::JobManager class now takes a flattened hash with valid keys 'depend' for a custom dependancy and 'history' to specify whether to pre-cache the job history of submitted jobs (default is false). Added wrappers to more of the command line tools as methods of the LSF::Job object. See the LSF::Job perldoc page for a full list. Platform computing recently released version 5.0 of the Load Share Facility. There are numerous changes, not least of which that the Job Group functionality has disappeared. I will more fully describe the changes and update this API in the forthcoming 1.0 release.