Modifier and Type | Field and Description |
---|---|
private boolean |
expired |
private java.util.concurrent.locks.ReentrantReadWriteLock |
freezeLock |
private java.lang.Object |
key |
private java.util.concurrent.locks.ReentrantLock |
lock |
private SoftLockManager |
manager |
private static int |
PRIME |
Constructor and Description |
---|
ReadCommittedSoftLockImpl(SoftLockManager manager,
java.lang.Object key)
Create a new ReadCommittedSoftLockImpl instance
|
Modifier and Type | Method and Description |
---|---|
private void |
clear() |
void |
clearTryLock()
Clear the state of the soft lock after a tryLock() call succeeded.
|
void |
freeze()
Freeze the soft lock.
|
Element |
getElement(TransactionID currentTransactionId,
SoftLockID softLockId)
Get the element the current transaction is supposed to see.
|
java.lang.Object |
getKey()
Get the key of the element this soft lock is guarding
|
boolean |
isExpired()
Check if the soft lock expired, ie: that the thread which locked it died
|
private boolean |
isFrozen() |
private boolean |
isLocked() |
void |
lock()
Lock the soft lock
|
java.lang.String |
toString() |
boolean |
tryLock(long ms)
Attempt to lock the soft lock
|
void |
unfreeze()
Unfreeze the soft lock
|
void |
unlock()
Unlock the soft lock.
|
private static final int PRIME
private final SoftLockManager manager
private final java.util.concurrent.locks.ReentrantLock lock
private final java.util.concurrent.locks.ReentrantReadWriteLock freezeLock
private final java.lang.Object key
private volatile boolean expired
ReadCommittedSoftLockImpl(SoftLockManager manager, java.lang.Object key)
manager
- the creating managerkey
- the element's key this soft lock is going to protectpublic java.lang.Object getKey()
public Element getElement(TransactionID currentTransactionId, SoftLockID softLockId)
getElement
in interface SoftLock
currentTransactionId
- the current transaction under which this call is executedsoftLockId
- the soft lock IDpublic boolean tryLock(long ms) throws java.lang.InterruptedException
public void clearTryLock()
clearTryLock
in interface SoftLock
public void unlock()
private boolean isLocked()
public void freeze()
SoftLock.getElement(TransactionID, SoftLockID)
method calls.
Freeze is used to mark the start of a commit / rollback phaseprivate boolean isFrozen()
public boolean isExpired()
private void clear()
public java.lang.String toString()
toString
in class java.lang.Object