Table of Contents | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Introduction
You can use locks to prevent a job start, starting while another job is running. You can find some informations the information about looks locks at http://www.sos-berlin.com/doc/en/scheduler.doc/lock.xml
Locks are defined in files in the hotfolder hot folder (live
). The name of the file is Lock file names follow the convention:
- the name of the lock followed by
.lock.xml
.
E.g.lockSample.lock.xml
Using To use locks, you have to:
- declare a lock
- assign the lock to the involved required jobs
Example
the lockA typical lock declaration would be:
Code Block |
---|
<locks>
<lock name="lockSample"/>
</locks>
|
two jobs, assigned to To assign the lock to your jobs use:
Code Block |
---|
<?xml version="1.0" encoding="ISO-8859-1"?> <job order="yes" stop_on_error="no"> <lock.use lock="lockSample" exclusive="yes"/> <script language="shell"> <![CDATA[ echo "here is the job jobsSample_1" echo "I'm not running in parallel with job jobsSample_2" ping -n 60 localhost ]]> </script> </job> |
Code Block |
---|
<?xml version="1.0" encoding="ISO-8859-1"?> <job order="yes" stop_on_error="no"> <lock.use lock="lockSample" exclusive="yes"/> <script language="shell"> <![CDATA[ echo "here is the job jobsSample_2" echo "I'm not running in parallel with job jobsSample_1" ping -n 60 localhost ]]> </script> </job> |
Two job chains using the jobs
Code Block |
---|
<?xml version="1.0" encoding="ISO-8859-1"?>
<job_chain>
<job_chain_node state="100"
job="jobsSample_1"
next_state="success"
error_state="error"/>
<job_chain_node state="success"/>
<job_chain_node state="error"/>
</job_chain>
|
Code Block |
---|
<?xml version="1.0" encoding="ISO-8859-1"?> <job_chain> <job_chain_node state="100" job="jobsSample_2" next_state="success" error_state="error"/> <job_chain_node state="success"/> <job_chain_node state="error"/> </job_chain> |
Two orders assigned to the job chain
Code Block |
---|
<?xml version="1.0" encoding="ISO-8859-1"?>
<order job_chain="job_chain1"
id="test_lock1">
</order>
|
...
Scope of locks
- Where are lock files saved?
- Locks are stored directly in the
live
folder or any sub-folders.
- Locks are stored directly in the
- How do you reference locks in jobs?
- Locks are identified by their path:
- this is made up of the folder where the lock is stored and of the name of the lock.
- Locks that are located in the same folder as the job can be addressed using the lock's name (omitting the folder).
- Locks are identified by their path:
- Example:
- Lock Location
- Folder
live/project_a
contains a set of jobs and a lock namedmy_lock_a
- Folder
live/project_b
contains a set of jobs and a lock namedmy_lock_b
- Folder
- Lock Usage
job_a
from the folder namedproject_a
can reference the lock from its folder using for example:<lock.use name="my_lock_a" exclusive="true"/>
- Job
job_b
from folderproject_b
can be configured to use its local lock in a similar manner. - Should it be necessary to prevent jobs
job_a
andjob_b
from runnig in parallel then they have to use a common lock. This is achieved by referencing a common lock, e.g. jobjob_b
could use a reference tomy_lock_a
from the folderproject_a
like this:<lock.use name="/project_a/my_lock_a" exlcusive="yes"/>
- Caveat: It is possible to use the same lock name in different folders to represent different locks. Jobs using relative lock addressing (i.e. just the locks' name) and omitting the folder name would reference the lock in their local folder. Consider using absolute lock addressing if you want jobs from different folders to make use of the same lock.
- Hint: Locks that are located directly in the
live
folder can be addressed with a leading slash as follows:<lock.use name="/my_global_lock" exclusive="yes"/>
- Lock Location