Interface Sherlock

  • All Known Implementing Classes:
    SherlockStub

    public interface Sherlock
    Manages distributed locks.
    • Method Detail

      • initialize

        void initialize()
        Initializes underlying infrastructure. If this method is not invoked explicitly then it can be invoked implicitly when acquiring or releasing a lock for the first time.

        Most often initialization is related with creating indexes and tables.

      • createLock

        com.coditory.sherlock.DistributedLockBuilder<DistributedLock> createLock()
        Creates a distributed lock. Created lock may be acquired only once by the same owner:
        
         assert lock.acquire() == true
         assert lock.acquire() == false
         
        Returns:
        the lock builder
      • createLock

        default DistributedLock createLock​(java.lang.String lockId)
        Creates a lock with default configuration.
        Parameters:
        lockId - lock identifier
        Returns:
        the lock
        See Also:
        createLock()
      • createReentrantLock

        com.coditory.sherlock.DistributedLockBuilder<DistributedLock> createReentrantLock()
        Creates a distributed reentrant lock. Reentrant lock may be acquired multiple times by the same owner:
        
         assert reentrantLock.acquire() == true
         assert reentrantLock.acquire() == true
         
        Returns:
        the reentrant lock builder
      • createReentrantLock

        default DistributedLock createReentrantLock​(java.lang.String lockId)
        Creates a reentrant lock with default configuration.
        Parameters:
        lockId - lock identifier
        Returns:
        the reentrant lock
        See Also:
        createReentrantLock()
      • createOverridingLock

        com.coditory.sherlock.DistributedLockBuilder<DistributedLock> createOverridingLock()
        Create a distributed overriding lock. Returned lock may acquire or release any other lock without checking its state:
        
         assert someLock.acquire() == true
         assert overridingLock.acquire() == true
         

        It could be used for administrative actions.

        Returns:
        the overriding lock builder
      • createOverridingLock

        default DistributedLock createOverridingLock​(java.lang.String lockId)
        Creates an overriding lock with default configuration.
        Parameters:
        lockId - lock identifier
        Returns:
        the overriding lock
        See Also:
        createOverridingLock()
      • forceReleaseAllLocks

        boolean forceReleaseAllLocks()
        Force releases all acquired locks.

        It could be used for administrative actions.

        Returns:
        true if any lock was released
      • forceReleaseLock

        default boolean forceReleaseLock​(java.lang.String lockId)
        Force releases a lock.

        It could be used for administrative actions.

        Parameters:
        lockId - lock identifier
        Returns:
        true if lock was released