Interface LockManager

All Known Implementing Classes:
DefaultLockManager, ExtendedStatisticLockManager, TopKeyLockManager

public interface LockManager
An interface to deal with all aspects of acquiring and releasing locks for cache entries.
Since:
4.0
Author:
Manik Surtani (manik@jboss.org), Mircea.Markus@jboss.com, Pedro Ruivo
  • Method Details

    • lock

      KeyAwareLockPromise lock(Object key, Object lockOwner, long time, TimeUnit unit)
      Attempts to lock the key if the lock isn't already held by the lockOwner.

      This method is non-blocking and return immediately a LockPromise. The LockPromise can (and should) be used by the invoker to check when the lock is really acquired by invoking LockPromise.lock().

      Parameters:
      key - key to lock.
      lockOwner - the owner of the lock.
      time - the maximum time to wait for the lock
      unit - the time unit of the time argument
      Returns:
      the KeyAwareLockPromise associated to this keys.
    • lockAll

      KeyAwareLockPromise lockAll(Collection<?> keys, Object lockOwner, long time, TimeUnit unit)
      Same as 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.

      Parameters:
      keys - keys to lock.
      lockOwner - the owner of the lock.
      time - the maximum time to wait for the lock
      unit - the time unit of the time argument
      Returns:
      the KeyAwareLockPromise associated to this keys.
    • unlock

      void unlock(Object key, Object lockOwner)
      Releases the lock for the key if the lockOwner is the lock owner.

      Note this method will unlock a lock where the key is the lockOwner

      Parameters:
      key - key to unlock.
      lockOwner - the owner of the lock.
    • unlockAll

      void unlockAll(Collection<?> keys, Object lockOwner)
      Same as unlock(Object, Object) but for multiple keys.

      Note this method will not unlock a lock where the key is the lockOwner

      Parameters:
      keys - keys to unlock.
      lockOwner - the owner of the lock.
    • unlockAll

      void unlockAll(InvocationContext context)
      Same as unlockAll(context.getLockedKeys(), context.getKeyLockOwner();.

      Note this method will not unlock a lock where the key is the lockOwner

      Parameters:
      context - the context with the locked keys and the lock owner.
    • ownsLock

      boolean ownsLock(Object key, Object lockOwner)
      Tests if the lockOwner owns a lock on the key.
      Parameters:
      key - key to test.
      lockOwner - the owner of the lock.
      Returns:
      true if the owner does own the lock on the key, false otherwise.
    • isLocked

      boolean isLocked(Object key)
      Tests if the key is locked.
      Parameters:
      key - key to test.
      Returns:
      true if the key is locked, false otherwise.
    • getOwner

      Object getOwner(Object key)
      Retrieves the owner of the lock for the key.
      Returns:
      the owner of the lock, or null if not locked.
    • printLockInfo

      String printLockInfo()
      Prints lock information for all locks.
      Returns:
      the lock information
    • getNumberOfLocksHeld

      int getNumberOfLocksHeld()
      Returns:
      the number of locks held.
    • getLock

      InfinispanLock getLock(Object key)