public interface

RepositoryLock

com.atlassian.bitbucket.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.

Summary

Public Methods
<T, E extends Exception> T withLock(Repository repository, Operation<T, E> operation)
Performs the provided operation while holding a lock on the specified repository.
<T, E extends Exception> T withLock(int repositoryId, Operation<T, E> operation)
Performs the provided operation while holding a lock on the specified 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.

Parameters
repository the repository to lock
operation the operation to perform while holding the lock
Returns
Throws
if the operation fails
Exception

public T withLock (int 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
Returns
Throws
if the operation fails
Exception