Fixed
Details
Time tracking
8.5h loggedAssignee
John (TJ) KnoellerJohn (TJ) KnoellerFix versions
Priority
MajorHTCondorCustomerGroup
condor-usersComponents
Reporter
John (TJ) KnoellerJohn (TJ) Knoeller
Details
Details
Time tracking
8.5h logged
Assignee
John (TJ) Knoeller
John (TJ) KnoellerFix versions
Priority
HTCondorCustomerGroup
condor-users
Components
Reporter
John (TJ) Knoeller
John (TJ) KnoellerCreated September 28, 2021 at 4:50 PM
Updated October 7, 2022 at 7:00 PM
Resolved October 22, 2021 at 2:03 PM
SUBMIT_REQUIREMENTS currently are not applied to factory submissions. A factory can be submitted successfully, and then have all job materialization fail because of submit requirements. This is particularly bad because a job factory with no materialized jobs is not visible in the normal output of condor_q.
The difficulty with applying SUBMIT_REQUIREMENTS to factory submissions is that until a job is materialized, there is a Cluster classad, but no Proc classad, and it it may not be possible to apply JOB_TRANSFORMS to the cluster classad, or doing so may give incorrect results (unlikely but possible).
On possible solution would be to a different set of SUBMIT_REQUIREMENTS for factory submissions. Or perhaps split SUBMIT_REQUIREMENTS into pre and post job transform lists, and attempt only the pre transform requirements for factories. but we have rejected this approach as it would confusing to users.
Scope of work
We will fix this by applying JOB_TRANSFORMs and SUBMIT_REQUIREMENTS to the cluster ad at the time of the factory submission. This will happen inside the schedd while it is committing the transaction. This must happen after the factory has stuffed factory attributes such as the materialization limit, so that a SUBMIT_REQUIREMENT can refer to that and apply constraints on the materialization.
The steps for this operation will be
set factory attributes
JobMaterializeDigestFile
,JobMaterializeLimit
andJobMaterializeMaxIdle
, to correct values (this happens now)create a temporary Proc0 ad and chain it to the Cluster ad
apply JOB_TRANSFORMs to the temporary Proc0 ad
check SUBMIT_REQUIREMENTS against the temporary Proc0 and fail the transaction if any requirement does not succeed
apply changes in the temporary Proc0 ad back to the Cluster ad
finish committing the submit transaction for the factory and queue materialization (this happens now)