Interface DistributedLock

    • Method Detail

      • getId

        java.lang.String getId()
        Return the lock id.
        Returns:
        the lock id
      • acquire

        boolean acquire()
        Try to acquire the lock. Lock is acquired for a pre configured duration.
        Returns:
        true if lock is acquired
      • acquire

        boolean acquire​(java.time.Duration duration)
        Try to acquire the lock for a given duration.
        Parameters:
        duration - how much time must pass for the acquired lock to expire
        Returns:
        true if lock is acquired
      • acquireForever

        boolean acquireForever()
        Try to acquire the lock without expiring date.

        It is potentially dangerous. Lookout for a situation when the lock owning instance goes down with out releasing the lock.

        Returns:
        true if lock is acquired
      • release

        boolean release()
        Try to release the lock.
        Returns:
        true if lock was released by this method invocation. If lock has expired or was released earlier then false is returned.
      • acquireAndExecute

        default DistributedLock.AcquireAndExecuteResult acquireAndExecute​(java.time.Duration duration,
                                                                          java.lang.Runnable action)
        Acquire a lock for specific duration and release it after action is executed.

        This is a helper method that makes sure the lock is released when action finishes successfully or throws an exception.

        Parameters:
        duration - how much time must pass to release the lock
        action - to be executed when lock is acquired
        Returns:
        DistributedLock.AcquireAndExecuteResult
        See Also:
        acquire(Duration)