org.jgroups.blocks

## Class DistributedLockManager

- java.lang.Object
- - org.jgroups.blocks.DistributedLockManager

All Implemented Interfaces:
  LockManager, TwoPhaseVotingListener, VoteResponseProcessor, MembershipListener

Deprecated.
Succeessor is `LockService`.

    @Deprecated
    public class DistributedLockManager
    extends java.lang.Object
    implements TwoPhaseVotingListener, LockManager, VoteResponseProcessor, MembershipListener

Distributed lock manager is responsible for maintaining the lock information consistent on all participating nodes.

Author:
  Roman Rokytskyy (rrokytskyy@acm.org), Robert Schaffar-Taurok (robert@fusion.at)

### Nested Class Summary

Nested Classes
`static class` `DistributedLockManager.AcquireLockDecree` Deprecated. This class represents the lock to be released.
`static class` `DistributedLockManager.LockDecree` Deprecated. This class represents the lock
`static class` `DistributedLockManager.MultiLockDecree` Deprecated. This class represents the lock that has to be marked as multilocked
`static class` `DistributedLockManager.ReleaseLockDecree` Deprecated. This class represents the lock to be released.

### Field Summary

Fields
`protected Log` `log` Deprecated.

### Constructor Summary

Constructors
Constructor and Description
`DistributedLockManager(TwoPhaseVotingAdapter channel, java.lang.Object id)` Deprecated. Constructor for the DistributedLockManager_cl object.
`DistributedLockManager(VotingAdapter voteChannel, java.lang.Object id)` Deprecated. Create instance of this class.

### Method Summary

Methods
`void` `abort(java.lang.Object decree)` Deprecated. Abort phase for the lock acquisition or release.
`void` `block()` Deprecated. Called (usually by the FLUSH protocol), as an indication that the member should stop sending messages.
`boolean` `commit(java.lang.Object decree)` Deprecated. Commit phase for the lock acquisition or release.
`void` `lock(java.lang.Object lockId, java.lang.Object owner, int timeout)` Deprecated. Locks an object with `lockId` on behalf of the specified `owner`.
`boolean` `prepare(java.lang.Object decree)` Deprecated. Prepare phase for the lock acquisition or release.
`boolean` `processResponses(RspList responses, int consensusType, java.lang.Object decree)` Deprecated. Processes the response list and votes like the default processResponses method with the consensusType VOTE_ALL If the result of the voting is false, but this DistributedLockManager owns the lock, the result is changed to true and the lock is released, but marked as multiple locked.
`void` `suspect(Address suspected_mbr)` Deprecated. Called whenever a member is suspected of having crashed, but has not yet been excluded.
`void` `unlock(java.lang.Object lockId, java.lang.Object owner)` Deprecated. Unlocks an object with `lockId` on behalf of the specified `owner`.
`void` `unlock(java.lang.Object lockId, java.lang.Object owner, boolean releaseMultiLocked)` Deprecated. Unlocks an object with `lockId` on behalf of the specified `owner`.
`void` `unlock(java.lang.Object lockId, java.lang.Object owner, boolean releaseMultiLocked, long timeout)` Deprecated.
`void` `unlock(java.lang.Object lockId, java.lang.Object owner, long timeout)` Deprecated.
`void` `viewAccepted(View new_view)` Deprecated. Remove all locks held by members who left the previous view

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### log

    protected final Log log

Deprecated.

### Constructor Detail

#### DistributedLockManager

    public DistributedLockManager(VotingAdapter voteChannel,
                          java.lang.Object id)

Deprecated.
Create instance of this class.

Parameters:
  `voteChannel` - instance of `VotingAdapter` that will be used for voting purposes on the lock decrees. `voteChannel()` will be wrapped by the instance of the `TwoPhaseVotingAdapter`.
  `id` - the unique identifier of this lock manager. todo check if the node with the same id is already in the group.

#### DistributedLockManager

    public DistributedLockManager(TwoPhaseVotingAdapter channel,
                          java.lang.Object id)

Deprecated.
Constructor for the DistributedLockManager_cl object.

Parameters:
  `channel` - instance of `TwoPhaseVotingAdapter` that will be used for voting purposes on the lock decrees.
  `id` - the unique identifier of this lock manager.
To do:
  check if the node with the same id is already in the group.

### Method Detail

#### lock

    public void lock(java.lang.Object lockId,
            java.lang.Object owner,
            int timeout)
              throws LockNotGrantedException,
                     ChannelException

Deprecated.
Locks an object with `lockId` on behalf of the specified `owner`.

Specified by:
  `lock` in interface `LockManager`
Parameters:
  `lockId` - `Object` representing the object to be locked.
  `owner` - object that requests the lock. This should be the Address of a JGroups member, otherwise we cannot release the locks for a crashed member !
  `timeout` - time during which group members should decide whether to grant a lock or not.
Throws:
  `LockNotGrantedException` - when the lock cannot be granted.
  `java.lang.ClassCastException` - if lockId or owner are not serializable.
  `ChannelException` - if something bad happened to underlying channel.

#### unlock

    public void unlock(java.lang.Object lockId,
              java.lang.Object owner)
                throws LockNotReleasedException,
                       ChannelException

Deprecated.
Unlocks an object with `lockId` on behalf of the specified `owner`. since 2.2.9 this method is only a wrapper for unlock(Object lockId, Object owner, boolean releaseMultiLocked). Use that with releaseMultiLocked set to true if you want to be able to release multiple locked locks (for example after a merge)

Specified by:
  `unlock` in interface `LockManager`
Parameters:
  `lockId` - `long` representing the object to be unlocked.
  `owner` - object that releases the lock.
Throws:
  `LockNotReleasedException` - when the lock cannot be released.
  `java.lang.ClassCastException` - if lockId or owner are not serializable.
  `ChannelException` - if something bad happened to communication channel.

#### unlock

    public void unlock(java.lang.Object lockId,
              java.lang.Object owner,
              long timeout)
                throws LockNotReleasedException,
                       ChannelException

Deprecated.

Throws:
  `LockNotReleasedException`
  `ChannelException`

#### unlock

    public void unlock(java.lang.Object lockId,
              java.lang.Object owner,
              boolean releaseMultiLocked)
                throws LockNotReleasedException,
                       ChannelException,
                       LockMultiLockedException

Deprecated.
Unlocks an object with `lockId` on behalf of the specified `owner`.

Specified by:
  `unlock` in interface `LockManager`
Parameters:
  `lockId` - `long` representing the object to be unlocked.
  `owner` - object that releases the lock.
  `releaseMultiLocked` - releases also multiple locked locks. (eg. locks that are locked by another DLM after a merge)
Throws:
  `LockNotReleasedException` - when the lock cannot be released.
  `java.lang.ClassCastException` - if lockId or owner are not serializable.
  `LockMultiLockedException` - if releaseMultiLocked is true and a multiple locked lock has been released.
  `ChannelException` - if something bad happened to communication channel.

#### unlock

    public void unlock(java.lang.Object lockId,
              java.lang.Object owner,
              boolean releaseMultiLocked,
              long timeout)
                throws LockNotReleasedException,
                       ChannelException,
                       LockMultiLockedException

Deprecated.

Throws:
  `LockNotReleasedException`
  `ChannelException`
  `LockMultiLockedException`

#### prepare

    public boolean prepare(java.lang.Object decree)
                    throws VoteException

Deprecated.
Prepare phase for the lock acquisition or release.

Specified by:
  `prepare` in interface `TwoPhaseVotingListener`
Parameters:
  `decree` - should be an instance `LockDecree`, if not, we throw `VoteException` to be ignored by the `VoteChannel`.
Returns:
  `true` when preparing the lock operation succeeds.
Throws:
  `VoteException` - if we should be ignored during voting.

#### commit

    public boolean commit(java.lang.Object decree)
                   throws VoteException

Deprecated.
Commit phase for the lock acquisition or release.

Specified by:
  `commit` in interface `TwoPhaseVotingListener`
Parameters:
  `decree` - should be an instance `LockDecree`, if not, we throw `VoteException` to be ignored by the `VoteChannel`.
Returns:
  `true` when commiting the lock operation succeeds.
Throws:
  `VoteException` - if we should be ignored during voting.

#### abort

    public void abort(java.lang.Object decree)
               throws VoteException

Deprecated.
Abort phase for the lock acquisition or release.

Specified by:
  `abort` in interface `TwoPhaseVotingListener`
Parameters:
  `decree` - should be an instance `LockDecree`, if not, we throw `VoteException` to be ignored by the `VoteChannel`.
Throws:
  `VoteException` - if we should be ignored during voting.

#### processResponses

    public boolean processResponses(RspList responses,
                           int consensusType,
                           java.lang.Object decree)
                             throws ChannelException

Deprecated.
Processes the response list and votes like the default processResponses method with the consensusType VOTE_ALL If the result of the voting is false, but this DistributedLockManager owns the lock, the result is changed to true and the lock is released, but marked as multiple locked. (only in the prepare state to reduce traffic)

Note: we do not support voting in case of Byzantine failures, i.e. when the node responds with the fault message.

Specified by:
  `processResponses` in interface `VoteResponseProcessor`
Parameters:
  `responses` - The responses
  `consensusType` - The consensusType of the vote
  `decree` - The vote decree
Returns:
  boolean
Throws:
  `ChannelException`

#### viewAccepted

    public void viewAccepted(View new_view)

Deprecated.
Remove all locks held by members who left the previous view

Specified by:
  `viewAccepted` in interface `MembershipListener`

#### suspect

    public void suspect(Address suspected_mbr)

Deprecated.
Description copied from interface: `MembershipListener`
Called whenever a member is suspected of having crashed, but has not yet been excluded.

Specified by:
  `suspect` in interface `MembershipListener`

#### block

    public void block()

Deprecated.
Description copied from interface: `MembershipListener`
Called (usually by the FLUSH protocol), as an indication that the member should stop sending messages. Any messages sent after returning from this callback might get blocked by the FLUSH protocol. When the FLUSH protocol is done, and messages can be sent again, the FLUSH protocol will simply unblock all pending messages. If a callback for unblocking is desired, implement `ExtendedMembershipListener.unblock()`. Note that block() is the equivalent of reception of a BlockEvent in the pull mode.

Specified by:
  `block` in interface `MembershipListener`