public interface

PullRequestLock

com.atlassian.bitbucket.concurrent.PullRequestLock

Class Overview

A reusable component for locking a pull request while an operation is performed.

Separate instances of this interface are not related. Locking a pull request 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 pull request data, so that only one is running on a given pull request 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 pull request.

Summary

Public Methods
<T, E extends Exception> T withLock(int repositoryId, long pullRequestId, Operation<T, E> operation)
Performs the provided operation while holding a lock on the specified pull request.
<T, E extends Exception> T withLock(PullRequest pullRequest, Operation<T, E> operation)
Performs the provided operation while holding a lock on the specified pull request.

Public Methods

public T withLock (int repositoryId, long pullRequestId, Operation<T, E> operation)

Performs the provided operation while holding a lock on the specified pull request.

Note: Locking a pull request by ID or by PullRequest instance acquires the same underlying lock.

Parameters
repositoryId the ID of the repository to lock
pullRequestId the ID of the pull request to lock in the specified repository
operation the operation to perform while holding the lock
Returns
Throws
if the operation fails
Exception

public T withLock (PullRequest pullRequest, Operation<T, E> operation)

Performs the provided operation while holding a lock on the specified pull request.

Note: Locking a pull request by ID or by PullRequest instance acquires the same underlying lock.

Parameters
pullRequest the pull request to lock
operation the operation to perform while holding the lock
Returns
Throws
if the operation fails
Exception