Interface Sherlock

  • All Known Implementing Classes:
    SherlockStub

    public interface Sherlock
    Creates and manages distributed locks.
    • Method Detail

      • getOwnerId

        java.lang.String getOwnerId()
        Returns:
        owner id is most often the application instance id
      • getLockDuration

        java.time.Duration getLockDuration()
        Returns:
        the default lock duration
      • createLock

        DistributedLock createLock​(java.lang.String lockId,
                                   java.time.Duration duration)
        Create a lock. Created lock may be acquired only once by the same application instance:
        
         assert reentrantLock.acquire() == true
         assert reentrantLock.acquire() == false
         
        Parameters:
        lockId - the lock id
        duration - after that time lock expires and is released
        Returns:
        the lock
      • createReentrantLock

        DistributedLock createReentrantLock​(java.lang.String lockId,
                                            java.time.Duration duration)
        Create a distributed reentrant lock. Reentrant lock maybe acquired multiple times by the same application instance:
        
         assert reentrantLock.acquire() == true
         assert reentrantLock.acquire() == true
         
        Parameters:
        lockId - the lock id
        duration - after that time lock expires and is released
        Returns:
        the reentrant lock
      • createOverridingLock

        DistributedLock createOverridingLock​(java.lang.String lockId,
                                             java.time.Duration duration)
        Create a distributed overriding lock. Returned lock overrides lock state without checking if it was released.
        Parameters:
        lockId - the lock id
        duration - after that time lock expires and is released
        Returns:
        the reentrant lock