Details
-
Feature
-
Status: Dismissed (View Workflow)
-
Minor
-
Resolution: Won't Do
-
None
-
None
-
None
Description
Current Situation
- Locks are available on a per job basis.
- Locks are not applicable to job chains with the intention to restrict parallel execution to a specific number of orders. If each job in a job chain is assigned a lock then it is not foreseeable if these locks can be acquired in sequence for a specific order.
Desired Behavior
- Enable locks at job chain level:
- Before starting an order the job chain checks if the required lock(s) is available.
- The job chain keeps the lock until the order leaves the job chain.
- Even if an order is suspended or setback then the job chain still keeps the lock.
- Configuration sample:
<job_chain> ... <lock.use lock="my_lock" exclusive="no"/> </job_chain>
Use Cases
- Prevent 2 job chains from running at the same time
- Prevent 2 orders from running in the same job chain at the same time (=no pipelining)
- Prevent a job chain and a (standalone) job from running at the same time
Maintainer Notes
- This use case creates some complex dependencies and requires a redesign of the job chain and order objects.
- This use case is covered by use of the attribute <job_chain max_orders="1"> that would restrict the number of parallel orders, i.e. additional orders
- would wait until the job chain is ready to accept an additional order.
- would be processed by the job chain in the sequence of their arrival.
- This use case will probably be dismissed as in future releases all jobs will be executed within job chains. Standalone jobs will be mapped to job chains with a single job node.
A scripting solution for use cases 1 and 2 is available with the How to prevent concurrent access to resources by parallel execution of orders in job chains article.
Feel free to vote for this feature and make us know your feedback.
Attachments
There are no Sub-Tasks for this issue.