Dependency handling of submission controller
During testing, I've discovered two cases where the submission controller behaves unexpectedly. The behaviour is expected to be ideal for all submission controller implementations since the relevant code is in the base class.
- If there is a single job without any outputs, it is skipped because the outputs are already ready. See test case test_single_job_no_output and it's output
=====================================================================
FAIL: test_single_job_no_output (test_submission_controller.DependencyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "CommonAnalysisHelpers/test/test_submission_controller.py", line 589, in test_single_job_no_output
self.assertEqual(thisTask.jobid, 10042)
AssertionError: None != 10042
I think there is a legitimate use case for jobs without any output file, for example jobs which perform checks and the actual output is the log file of the job.
- A job whose dependency had to be re-submitted is not automatically re-submitted. Consider the simple example of a dependency chain of there jobs:
1 <-- 2 <-- 3
(job 1 has no dependencies). If the outputs of job 1 and 3 are up-to-date but the output of job 2 is outdated, a submission of job 3 should trigger the submission of jobs 2 and 3. However, the current implementation sets job 2 totosubmit
but does neither submit job 2 nor job 3. See for example test case test_dep_three_jobs_uou and its output
======================================================================
FAIL: test_dep_three_jobs_uou (test_submission_controller.DependencyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "CommonAnalysisHelpers/test/test_submission_controller.py", line 1094, in test_dep_three_jobs_uou
self.assertEqual(task2.statusCode, taskStatus.running)
AssertionError: 3 != 1
In fact, most test fail due to this issue. The same issue applies to more complex graphs, for example a diamond shaped graph.