lockExternalDir: Lock external directory

Description Usage Arguments Details Value Author(s) See Also Examples

View source: R/lockExternalDir.R

Description

Lock the external Conda installation directory so that multiple processes cannot try to install at the same time.

Usage

1
2
3

Arguments

path

String containing the path to the external directory.

...

For lockExternalDir, further arguments to pass to lockDirectory such as exclusive. For unlockExternalDir, further arguments to pass to unlockDirectory such as clear.

lock.info

A lock object generated by lockDirectory.

Details

This will apply a lock to the (possibly user-specified) external Conda installation directory, so that a user trying to run parallel basilisk processes will not have race conditions during lazy Conda installation. We use dir.expiry to manage the locking process for us, with the following strategy:

Note that locking is only required during installation of Conda (or its environments), not during actual use. Once an installation/environment is created, we assume that it is read-only for all processes. Technically, this might not be true if one were to install a new version of basilisk halfway through an R session, which would prompt installConda to wipe out the old Conda installations; but one cannot in general guarantee the behavior of running R sessions when package versions change anyway, so we won't bother to protect against that.

Value

lockExternalDir will return a lock object from lockDirectory.

unlockExternalDir will unlock the file and return NULL invisibly.

Author(s)

Aaron Lun

See Also

installConda, for an example of how to implement this locking approach.

Examples

1
2

LTLA/basilisk.utils documentation built on June 10, 2021, 8:41 p.m.