org.jgroups.blocks
public class DistributedLockManager extends Object implements TwoPhaseVotingListener, LockManager, VoteResponseProcessor
Version: $Id: DistributedLockManager.java,v 1.6 2005/06/08 15:56:54 publicnmi Exp $
Nested Class Summary | |
---|---|
static class | DistributedLockManager.AcquireLockDecree
This class represents the lock to be released. |
static class | DistributedLockManager.LockDecree
This class represents the lock |
static class | DistributedLockManager.MultiLockDecree
This class represents the lock that has to be marked as multilocked |
static class | DistributedLockManager.ReleaseLockDecree
This class represents the lock to be released. |
Field Summary | |
---|---|
protected Log | log |
Constructor Summary | |
---|---|
DistributedLockManager(VotingAdapter voteChannel, Object id)
Create instance of this class.
| |
DistributedLockManager(TwoPhaseVotingAdapter channel, Object id)
Constructor for the DistributedLockManager_cl object.
|
Method Summary | |
---|---|
void | abort(Object decree)
Abort phase for the lock acquisition or release.
|
boolean | commit(Object decree)
Commit phase for the lock acquisition or release.
|
void | lock(Object lockId, Object owner, int timeout)
Locks an object with lockId on behalf of the specified
owner .
|
boolean | prepare(Object decree)
Prepare phase for the lock acquisition or release.
|
boolean | processResponses(RspList responses, int consensusType, Object decree)
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. |
void | unlock(Object lockId, Object owner)
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).
|
void | unlock(Object lockId, Object owner, boolean releaseMultiLocked)
Unlocks an object with lockId on behalf of the specified
owner . |
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.
UNKNOWN: check if the node with the same id is already in the group.
Parameters: channel instance of TwoPhaseVotingAdapter that will be used for voting purposes on the lock decrees. id the unique identifier of this lock manager.
UNKNOWN: check if the node with the same id is already in the group.
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.
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.
lockId
on behalf of the specified
owner
.
Parameters: lockId Object
representing the object to be locked. owner object that requests the lock. timeout time during which group members should decide
whether to grant a lock or not.
Throws: LockNotGrantedException when the lock cannot be granted. ClassCastException if lockId or owner are not serializable. ChannelException if something bad happened to underlying channel.
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.
Note: we do not support voting in case of Byzantine failures, i.e. when the node responds with the fault message.
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)
Parameters: lockId long
representing the object to be unlocked. owner object that releases the lock.
Throws: LockNotReleasedException when the lock cannot be released. ClassCastException if lockId or owner are not serializable.
lockId
on behalf of the specified
owner
.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. ClassCastException if lockId or owner are not serializable. LockMultiLockedException if releaseMultiLocked is true and a multiple locked lock has been released.