model_lock {gms} | R Documentation |
Model lock/unlock
Description
Lock the model to coordinate multiple processes accessing the model. This is necessary if you change files within the model and have to avoid that another process reads from your half-written changes in the mean time. model_lock creates an exclusive lock on the given file and returns a lock id. When the lock id is handed to model_unlock the lock is dropped again, and another process can take the lock. The lock is also dropped when the lock id goes out of scope and is garbage collected in R or when the R process terminates or crashes. However, it is good practice to explicitly call model_unlock when you don't need the lock anymore. If you want to check for informational purposes if the model is currently locked by another process, you can use the is_model_locked() function. Note however that you should never use is_model_locked() to coordinate access to the model folder. The return value of is_model_locked() is only a snapshot at the time when the function is run. Note additionally that is_model_locked() checks if the model is locked by another process. If you currently hold the lock of the model yourself, it will return FALSE.
Usage
model_lock(folder = ".", file = ".lock", timeout1 = 12, timeout2 = NULL,
check_interval = NULL, oncluster = NULL)
model_unlock(id, folder = NULL, file = NULL, oncluster = NULL)
is_model_locked(folder = ".", file = ".lock")
Arguments
folder |
path to the model folder |
file |
file name of the lock file. Don't use the lock file for anything else (i.e. don't read or write or open the lock file). |
timeout1 |
Time in hours to wait for other processes to free the lock before giving up and exiting with an error. |
timeout2 |
deprecated setting which will be ignored. |
check_interval |
deprecated setting which will be ignored. |
oncluster |
deprecated setting which will be ignored. |
id |
lock id as returned by model_lock. |
Value
model_lock returns the lock id which is needed to identify the lock in model_unlock.
Author(s)
Jan Philipp Dietrich, David Klein, Mika Pflüger
See Also
Examples
#lock folder
id <- model_lock(tempdir())
#unlock folder
model_unlock(id)