Package org.infinispan.lock.api
Interface ClusteredLockManager
-
public interface ClusteredLockManager
Provides the API to define, create and remove ClusteredLocks.- Since:
- 9.2
- Author:
- Katia Aresti, karesti@redhat.com
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description boolean
defineLock(String name)
Defines a lock with the specific name and the defaultClusteredLockConfiguration
.boolean
defineLock(String name, ClusteredLockConfiguration configuration)
Defines a lock with the specific name andClusteredLockConfiguration
.CompletableFuture<Boolean>
forceRelease(String name)
Releases - or unlocks - aClusteredLock
if such exists.ClusteredLock
get(String name)
Get’s aClusteredLock
by it’s name.ClusteredLockConfiguration
getConfiguration(String name)
Returns the configuration of aClusteredLock
, if such exists.This method throwsClusteredLockException
if the lock is not not defined.boolean
isDefined(String name)
Checks if a lock is already defined.CompletableFuture<Boolean>
remove(String name)
Removes aClusteredLock
if such exists.
-
-
-
Method Detail
-
defineLock
boolean defineLock(String name)
Defines a lock with the specific name and the defaultClusteredLockConfiguration
. It does not overwrite existing configurations. Returns true if successfully defined or false if the lock is already defined or any other failure.- Parameters:
name
- , the name of the lock- Returns:
- true if the lock was successfully defined
-
defineLock
boolean defineLock(String name, ClusteredLockConfiguration configuration)
Defines a lock with the specific name andClusteredLockConfiguration
. It does not overwrite existing configurations. Returns true if successfully defined or false if the lock is already defined or any other failure.- Parameters:
name
- , the name of the lockconfiguration
- , aClusteredLockConfiguration
object with the configuration of the lock- Returns:
- true if the lock was successfully defined
-
get
ClusteredLock get(String name)
Get’s aClusteredLock
by it’s name. This method throwsClusteredLockException
if the lock is not not defined. A call ofdefineLock(java.lang.String)
must be done at least once in the cluster. This method will return the same lock object depending on theOwnershipLevel
. If theOwnershipLevel
isOwnershipLevel.NODE
, it wll return the same instance perClusteredLockManager
If theOwnershipLevel
isOwnershipLevel.INSTANCE
, it wll return a new instance per call.- Parameters:
name
- , the name of the lock- Returns:
ClusteredLock
instance
-
getConfiguration
ClusteredLockConfiguration getConfiguration(String name)
Returns the configuration of aClusteredLock
, if such exists.This method throwsClusteredLockException
if the lock is not not defined. A call ofdefineLock(java.lang.String)
must be done at least once in the cluster.- Parameters:
name
- , the name of the lock- Returns:
ClusteredLockConfiguration
for this lock
-
isDefined
boolean isDefined(String name)
Checks if a lock is already defined.- Parameters:
name
- , the lock name- Returns:
true
if this lock is defined
-
remove
CompletableFuture<Boolean> remove(String name)
Removes aClusteredLock
if such exists.- Parameters:
name
- , the name of the lock- Returns:
true
if the lock is removed
-
forceRelease
CompletableFuture<Boolean> forceRelease(String name)
Releases - or unlocks - aClusteredLock
if such exists. This method is used when we just want to force the release the lock no matter who is holding it at a given time. Calling this method may cause concurrency issues and has to be used in exceptional situations.- Parameters:
name
- , the name of the lock- Returns:
true
if the lock has been released
-
-