org.jgroups.blocks

Class DistributedLockManager

Implemented Interfaces:
LockManager, TwoPhaseVotingListener

public class DistributedLockManager
extends java.lang.Object
implements TwoPhaseVotingListener, LockManager

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

Author:
Roman Rokytskyy (rrokytskyy@acm.org)

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.ReleaseLockDecree
This class represents the lock to be released.

Field Summary

protected Log
log

Constructor Summary

DistributedLockManager(TwoPhaseVotingAdapter channel, Object id)
Constructor for the DistributedLockManager_cl object.
DistributedLockManager(VotingAdapter voteChannel, Object id)
Create instance of this class.

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.
void
unlock(Object lockId, Object owner)
Unlocks an object with lockId on behalf of the specified owner.

Field Details

log

protected Log log

Constructor Details

DistributedLockManager

public DistributedLockManager(TwoPhaseVotingAdapter channel,
                              Object id)
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.


DistributedLockManager

public DistributedLockManager(VotingAdapter voteChannel,
                              Object id)
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.

Method Details

abort

public void abort(Object decree)
            throws VoteException
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.


commit

public boolean commit(Object decree)
            throws VoteException
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.


lock

public void lock(Object lockId,
                 Object owner,
                 int timeout)
            throws LockNotGrantedException,
                   ChannelException
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.
timeout - time during which group members should decide whether to grant a lock or not.

Throws:
LockNotGrantedException - when the lock cannot be granted.
ChannelException - if something bad happened to underlying channel.


prepare

public boolean prepare(Object decree)
            throws VoteException
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.


unlock

public void unlock(Object lockId,
                   Object owner)
            throws LockNotReleasedException,
                   ChannelException
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.

Throws:
LockNotReleasedException - when the lock cannot be released.


Copyright B) 2001,2002 www.jgroups.com . All Rights Reserved.