| com.atlassian.stash.concurrent.RepositoryLock |
Class Overview
A reusable component for locking a repository while an operation is performed.
Separate instances of this interface
are not related. Locking a
repository in one instance
does not lock it in any other. The intention is to allow grouping
operations that perform similar
processing, or rely on the same repository data, so that only one is running on a given repository at a time, using
multiple locks when different bands of processing can be performed concurrently.
Note: When used by plugin developers, no instance of this lock can ever prevent the
host application
from performing any of its own processing on
any aspect of a repository.
Public Methods
public
T
withLock
(Repository repository, Operation<T, E> operation)
Performs the provided operation while holding a lock on the specified repository.
Note: Locking a repository by ID or by
Repository instance acquires the same underlying lock.
public
T
withLock
(Integer repositoryId, Operation<T, E> operation)
Performs the provided operation while holding a lock on the specified repository.
Note: Locking a repository by ID or by
Repository instance acquires the same underlying lock.
Parameters
| repositoryId
| the ID of the repository to lock |
| operation
| the operation to perform while holding the lock |