Package org.infinispan.stats.wrappers
Class ExtendedStatisticLockManager
- java.lang.Object
-
- org.infinispan.stats.wrappers.ExtendedStatisticLockManager
-
- All Implemented Interfaces:
LockManager
public class ExtendedStatisticLockManager extends Object implements LockManager
Takes statistic about lock acquisition.- Since:
- 6.0
- Author:
- Roberto Palmieri, Sebastiano Peluso, Diego Didona, Pedro Ruivo
-
-
Constructor Summary
Constructors Constructor Description ExtendedStatisticLockManager(LockManager actual, CacheStatisticManager cacheStatisticManager, org.infinispan.commons.time.TimeService timeService)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description LockManagergetActual()InfinispanLockgetLock(Object key)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 owner)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 ctx)Same asunlockAll(context.getLockedKeys(), context.getKeyLockOwner();.
-
-
-
Constructor Detail
-
ExtendedStatisticLockManager
public ExtendedStatisticLockManager(LockManager actual, CacheStatisticManager cacheStatisticManager, org.infinispan.commons.time.TimeService timeService)
-
-
Method Detail
-
getActual
public final LockManager getActual()
-
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 ctx)
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:
ctx- the context with the locked keys and the lock owner.
-
ownsLock
public boolean ownsLock(Object key, Object owner)
Description copied from interface:LockManagerTests if thelockOwnerowns a lock on thekey.- Specified by:
ownsLockin interfaceLockManager- Parameters:
key- key to test.owner- 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
public int getNumberOfLocksHeld()
- Specified by:
getNumberOfLocksHeldin interfaceLockManager- Returns:
- the number of locks held.
-
getLock
public InfinispanLock getLock(Object key)
- Specified by:
getLockin interfaceLockManager
-
-