Class DefaultLockManager
- java.lang.Object
-
- org.infinispan.util.concurrent.locks.impl.DefaultLockManager
-
- All Implemented Interfaces:
LockManager
@MBean(objectName="LockManager", description="Manager that handles MVCC locks for entries") public class DefaultLockManager extends Object implements LockManagerThe defaultLockManagerimplementation for transactional and non-transactional caches.- Since:
- 8.0
- Author:
- Pedro Ruivo
-
-
Constructor Summary
Constructors Constructor Description DefaultLockManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intgetConcurrencyLevel()InfinispanLockgetLock(Object key)intgetNumberOfLocksAvailable()intgetNumberOfLocksHeld()ObjectgetOwner(Object key)Retrieves the owner of the lock for thekey.booleanisLocked(Object key)Tests if thekeyis locked.KeyAwareLockPromiselock(Object key, Object lockOwner, long time, TimeUnit unit)Attempts to lock thekeyif the lock isn't already held by thelockOwner.KeyAwareLockPromiselockAll(Collection<?> keys, Object lockOwner, long time, TimeUnit unit)Same asLockManager.lock(Object, Object, long, TimeUnit)but for multiple keys.booleanownsLock(Object key, Object lockOwner)Tests if thelockOwnerowns a lock on thekey.StringprintLockInfo()Prints lock information for all locks.voidunlock(Object key, Object lockOwner)Releases the lock for thekeyif thelockOwneris the lock owner.voidunlockAll(Collection<?> keys, Object lockOwner)Same asLockManager.unlock(Object, Object)but for multiple keys.voidunlockAll(InvocationContext context)Same asunlockAll(context.getLockedKeys(), context.getKeyLockOwner();.
-
-
-
Method Detail
-
lock
public KeyAwareLockPromise lock(Object key, Object lockOwner, long time, TimeUnit unit)
Description copied from interface:LockManagerAttempts to lock thekeyif the lock isn't already held by thelockOwner.This method is non-blocking and return immediately a
LockPromise. TheLockPromisecan (and should) be used by the invoker to check when the lock is really acquired by invokingLockPromise.lock().- Specified by:
lockin interfaceLockManager- Parameters:
key- key to lock.lockOwner- the owner of the lock.time- the maximum time to wait for the lockunit- the time unit of thetimeargument- Returns:
- the
KeyAwareLockPromiseassociated to this keys.
-
lockAll
public KeyAwareLockPromise lockAll(Collection<?> keys, Object lockOwner, long time, TimeUnit unit)
Description copied from interface:LockManagerSame asLockManager.lock(Object, Object, long, TimeUnit)but for multiple keys.It ensures no deadlocks if the method is invoked by different lock owners for the same set (or subset) of keys.
- Specified by:
lockAllin interfaceLockManager- Parameters:
keys- keys to lock.lockOwner- the owner of the lock.time- the maximum time to wait for the lockunit- the time unit of thetimeargument- Returns:
- the
KeyAwareLockPromiseassociated to this keys.
-
unlock
public void unlock(Object key, Object lockOwner)
Description copied from interface:LockManagerReleases the lock for thekeyif thelockOwneris the lock owner.Note this method will unlock a lock where the key is the lockOwner
- Specified by:
unlockin interfaceLockManager- Parameters:
key- key to unlock.lockOwner- the owner of the lock.
-
unlockAll
public void unlockAll(Collection<?> keys, Object lockOwner)
Description copied from interface:LockManagerSame asLockManager.unlock(Object, Object)but for multiple keys.Note this method will not unlock a lock where the key is the lockOwner
- Specified by:
unlockAllin interfaceLockManager- Parameters:
keys- keys to unlock.lockOwner- the owner of the lock.
-
unlockAll
public void unlockAll(InvocationContext context)
Description copied from interface:LockManagerSame asunlockAll(context.getLockedKeys(), context.getKeyLockOwner();.Note this method will not unlock a lock where the key is the lockOwner
- Specified by:
unlockAllin interfaceLockManager- Parameters:
context- the context with the locked keys and the lock owner.
-
ownsLock
public boolean ownsLock(Object key, Object lockOwner)
Description copied from interface:LockManagerTests if thelockOwnerowns a lock on thekey.- Specified by:
ownsLockin interfaceLockManager- Parameters:
key- key to test.lockOwner- the owner of the lock.- Returns:
trueif the owner does own the lock on the key,falseotherwise.
-
isLocked
public boolean isLocked(Object key)
Description copied from interface:LockManagerTests if thekeyis locked.- Specified by:
isLockedin interfaceLockManager- Parameters:
key- key to test.- Returns:
trueif the key is locked,falseotherwise.
-
getOwner
public Object getOwner(Object key)
Description copied from interface:LockManagerRetrieves the owner of the lock for thekey.- Specified by:
getOwnerin interfaceLockManager- Returns:
- the owner of the lock, or
nullif not locked.
-
printLockInfo
public String printLockInfo()
Description copied from interface:LockManagerPrints lock information for all locks.- Specified by:
printLockInfoin interfaceLockManager- Returns:
- the lock information
-
getNumberOfLocksHeld
@ManagedAttribute(description="The number of exclusive locks that are held.", displayName="Number of locks held") public int getNumberOfLocksHeld()- Specified by:
getNumberOfLocksHeldin interfaceLockManager- Returns:
- the number of locks held.
-
getConcurrencyLevel
@ManagedAttribute(description="The concurrency level that the MVCC Lock Manager has been configured with.", displayName="Concurrency level", dataType=TRAIT) public int getConcurrencyLevel()
-
getNumberOfLocksAvailable
@ManagedAttribute(description="The number of exclusive locks that are available.", displayName="Number of locks available") public int getNumberOfLocksAvailable()
-
getLock
public InfinispanLock getLock(Object key)
- Specified by:
getLockin interfaceLockManager
-
-