Quadcap Embeddable Database

com.quadcap.sql.lock.LockManager Class Reference

List of all members.

Detailed Description

Manage a hierarchical set of read/write/intention locks.

Author:
Stan Bailes

Definition at line 62 of file LockManager.java.

Public Member Functions

 LockManager ()
 Constructor.

final Transaction getTransaction (long transId)
 Allocate a new Transaction.

Transaction findTransaction (long transId)
 Find an existing transaction.

void releaseTransaction (Transaction t)
 End a transaction, releasing all of its locks.

Iterator transactions ()
 Return an iterator over all active transactions.

final Lock getLock (Transaction t, Lock parent, String name, int mode) throws SQLException
 Instantiate the specified lock on behalf of transaction 't', which may or may not already have this lock.

String toString ()

Static Protected Attributes

final ConfigNumber trace = ConfigNumber.find("qed.trace.locks", "0")
final ConfigNumber lockTimeout = ConfigNumber.find("qed.lock.Timeout", "60")

Package Functions

final Iterator locksForTransaction (Transaction t)
 Return an Iterator over the held locks positioned at the first lock owned by transaction 't'.

final HeldLock getLockForTransaction (Transaction t, Lock lock)
 We're in the critical section still.

final void checkParentsLockMode (Transaction t, Lock lock, int mode)
 Ensure that the lock's parent(s) are properly locked, to enable locking lock in the specified mode.

final boolean couldLockWithParentMode (int pmode, int mode)
void promoteLock (HeldLock h, int mode)
void acquireLock (HeldLock h)

Package Attributes

final Object locksLock = new Object()
LockPool locks = new LockPool()
 Pool of lock objects.

HeldLockPool held = new HeldLockPool()
 Pool of 'held' locks.

HeldLock tmpHeld = null
 Temp held lock object used for searching.

TransactionPool transactions = new TransactionPool()
 Pool of transaction objects.

SortedArray byTrans
 held locks sorted by transaction

SortedArrayIterator byTransIter

Private Attributes

long transCount = 1


Constructor & Destructor Documentation

com.quadcap.sql.lock.LockManager.LockManager  ) 
 

Constructor.

Definition at line 109 of file LockManager.java.

References com.quadcap.sql.lock.LockManager.byTrans, com.quadcap.sql.lock.LockManager.byTransIter, com.quadcap.sql.lock.HeldLockPool.get(), com.quadcap.sql.lock.LockManager.held, com.quadcap.sql.lock.LockManager.locksLock, com.quadcap.sql.lock.SortedArray.size, com.quadcap.sql.lock.LockManager.tmpHeld, com.quadcap.sql.lock.LockManager.toString(), and com.quadcap.sql.lock.LockManager.trace.


Member Function Documentation

void com.quadcap.sql.lock.LockManager.acquireLock HeldLock  h  )  [package]
 

Definition at line 465 of file LockManager.java.

References com.quadcap.sql.lock.LockManager.acquireLock(), com.quadcap.sql.lock.SortedArray.add(), com.quadcap.sql.lock.LockManager.byTrans, com.quadcap.sql.lock.Lock.incrHeldCount(), com.quadcap.sql.lock.HeldLock.lock, and com.quadcap.sql.lock.HeldLock.mode.

Referenced by com.quadcap.sql.lock.LockManager.acquireLock(), com.quadcap.sql.lock.LockManager.getLock(), and com.quadcap.sql.lock.LockManager.releaseTransaction().

final void com.quadcap.sql.lock.LockManager.checkParentsLockMode Transaction  t,
Lock  lock,
int  mode
[package]
 

Ensure that the lock's parent(s) are properly locked, to enable locking lock in the specified mode.

Definition at line 420 of file LockManager.java.

References com.quadcap.sql.lock.LockManager.byTrans, com.quadcap.sql.lock.LockManager.checkParentsLockMode(), com.quadcap.sql.lock.LockManager.couldLockWithParentMode(), com.quadcap.sql.lock.Lock.getParent(), and com.quadcap.sql.lock.HeldLock.mode.

Referenced by com.quadcap.sql.lock.LockManager.checkParentsLockMode(), and com.quadcap.sql.lock.LockManager.getLock().

final boolean com.quadcap.sql.lock.LockManager.couldLockWithParentMode int  pmode,
int  mode
[package]
 

Definition at line 442 of file LockManager.java.

References com.quadcap.sql.lock.LockManager.couldLockWithParentMode().

Referenced by com.quadcap.sql.lock.LockManager.checkParentsLockMode(), and com.quadcap.sql.lock.LockManager.couldLockWithParentMode().

Transaction com.quadcap.sql.lock.LockManager.findTransaction long  transId  ) 
 

Find an existing transaction.

Return null if the specified transaction doesn't exist.

Definition at line 170 of file LockManager.java.

References com.quadcap.sql.lock.TransactionPool.find(), com.quadcap.sql.lock.LockManager.findTransaction(), and com.quadcap.sql.lock.LockManager.transactions.

Referenced by com.quadcap.sql.lock.LockManager.findTransaction().

final Lock com.quadcap.sql.lock.LockManager.getLock Transaction  t,
Lock  parent,
String  name,
int  mode
throws SQLException
 

Instantiate the specified lock on behalf of transaction 't', which may or may not already have this lock.

Definition at line 295 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.getLock().

final HeldLock com.quadcap.sql.lock.LockManager.getLockForTransaction Transaction  t,
Lock  lock
[package]
 

Definition at line 273 of file LockManager.java.

References com.quadcap.sql.lock.LockManager.byTransIter, com.quadcap.sql.lock.LockManager.getLockForTransaction(), com.quadcap.sql.lock.Transaction.getTransactionId(), com.quadcap.sql.lock.Lock.hashCode(), com.quadcap.sql.lock.SortedArrayIterator.hasNext(), com.quadcap.sql.lock.HeldLock.lock, com.quadcap.sql.lock.HeldLock.mode, com.quadcap.sql.lock.SortedArrayIterator.next(), com.quadcap.sql.lock.SortedArrayIterator.position(), com.quadcap.sql.lock.LockManager.tmpHeld, and com.quadcap.sql.lock.HeldLock.trans.

Referenced by com.quadcap.sql.lock.LockManager.getLockForTransaction().

final Transaction com.quadcap.sql.lock.LockManager.getTransaction long  transId  ) 
 

Allocate a new Transaction.

All lock operations are performed on behalf of a Transaction.

Definition at line 151 of file LockManager.java.

References com.quadcap.sql.lock.TransactionPool.get(), com.quadcap.sql.lock.LockManager.getTransaction(), com.quadcap.sql.lock.LockManager.locksLock, com.quadcap.sql.lock.LockManager.trace, and com.quadcap.sql.lock.LockManager.transactions.

Referenced by com.quadcap.sql.lock.LockManager.getTransaction().

final Iterator com.quadcap.sql.lock.LockManager.locksForTransaction Transaction  t  )  [package]
 

Return an Iterator over the held locks positioned at the first lock owned by transaction 't'.

Definition at line 266 of file LockManager.java.

References com.quadcap.sql.lock.LockManager.byTransIter, com.quadcap.sql.lock.HeldLock.lock, com.quadcap.sql.lock.LockManager.locksForTransaction(), com.quadcap.sql.lock.SortedArrayIterator.position(), com.quadcap.sql.lock.LockManager.tmpHeld, and com.quadcap.sql.lock.HeldLock.trans.

Referenced by com.quadcap.sql.lock.LockManager.locksForTransaction(), and com.quadcap.sql.lock.LockManager.releaseTransaction().

void com.quadcap.sql.lock.LockManager.promoteLock HeldLock  h,
int  mode
[package]
 

Definition at line 459 of file LockManager.java.

References com.quadcap.sql.lock.Lock.decrHeldCount(), com.quadcap.sql.lock.Lock.incrHeldCount(), com.quadcap.sql.lock.HeldLock.lock, com.quadcap.sql.lock.HeldLock.mode, and com.quadcap.sql.lock.LockManager.promoteLock().

Referenced by com.quadcap.sql.lock.LockManager.getLock(), and com.quadcap.sql.lock.LockManager.promoteLock().

void com.quadcap.sql.lock.LockManager.releaseTransaction Transaction  t  ) 
 

End a transaction, releasing all of its locks.

Definition at line 177 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.releaseTransaction().

String com.quadcap.sql.lock.LockManager.toString  ) 
 

Definition at line 471 of file LockManager.java.

References com.quadcap.sql.lock.LockManager.byTrans, com.quadcap.sql.lock.LockManager.locks, and com.quadcap.sql.lock.LockManager.locksLock.

Referenced by com.quadcap.sql.lock.LockManager.LockManager().

Iterator com.quadcap.sql.lock.LockManager.transactions  ) 
 

Return an iterator over all active transactions.

Definition at line 258 of file LockManager.java.

HeldLock  h  )  throws InterruptedException [package]
 

We're in the critical section still.

Definition at line 405 of file LockManager.java.

References com.quadcap.sql.lock.Transaction.getSync(), com.quadcap.sql.lock.Transaction.setWait(), and com.quadcap.sql.lock.LockManager.waitForLock().

Referenced by com.quadcap.sql.lock.LockManager.getLock(), and com.quadcap.sql.lock.LockManager.waitForLock().


Member Data Documentation

SortedArray com.quadcap.sql.lock.LockManager.byTrans [package]
 

held locks sorted by transaction

Definition at line 103 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.acquireLock(), com.quadcap.sql.lock.LockManager.checkParentsLockMode(), com.quadcap.sql.lock.LockManager.getLock(), com.quadcap.sql.lock.LockManager.LockManager(), and com.quadcap.sql.lock.LockManager.toString().

SortedArrayIterator com.quadcap.sql.lock.LockManager.byTransIter [package]
 

Definition at line 104 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.getLockForTransaction(), com.quadcap.sql.lock.LockManager.LockManager(), and com.quadcap.sql.lock.LockManager.locksForTransaction().

HeldLockPool com.quadcap.sql.lock.LockManager.held = new HeldLockPool() [package]
 

Pool of 'held' locks.

Definition at line 94 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.getLock(), com.quadcap.sql.lock.LockManager.LockManager(), and com.quadcap.sql.lock.LockManager.releaseTransaction().

LockPool com.quadcap.sql.lock.LockManager.locks = new LockPool() [package]
 

Pool of lock objects.

Definition at line 91 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.getLock(), and com.quadcap.sql.lock.LockManager.toString().

final Object com.quadcap.sql.lock.LockManager.locksLock = new Object() [package]
 

Definition at line 88 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.getLock(), com.quadcap.sql.lock.LockManager.getTransaction(), com.quadcap.sql.lock.LockManager.LockManager(), com.quadcap.sql.lock.LockManager.releaseTransaction(), and com.quadcap.sql.lock.LockManager.toString().

final ConfigNumber com.quadcap.sql.lock.LockManager.lockTimeout = ConfigNumber.find("qed.lock.Timeout", "60") [static, protected]
 

Definition at line 84 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.getLock().

HeldLock com.quadcap.sql.lock.LockManager.tmpHeld = null [package]
 

Temp held lock object used for searching.

Definition at line 97 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.getLockForTransaction(), com.quadcap.sql.lock.LockManager.LockManager(), and com.quadcap.sql.lock.LockManager.locksForTransaction().

final ConfigNumber com.quadcap.sql.lock.LockManager.trace = ConfigNumber.find("qed.trace.locks", "0") [static, protected]
 

Definition at line 80 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.getLock(), com.quadcap.sql.lock.LockManager.getTransaction(), com.quadcap.sql.lock.LockManager.LockManager(), and com.quadcap.sql.lock.LockManager.releaseTransaction().

TransactionPool com.quadcap.sql.lock.LockManager.transactions = new TransactionPool() [package]
 

Pool of transaction objects.

Definition at line 100 of file LockManager.java.

Referenced by com.quadcap.sql.lock.LockManager.findTransaction(), com.quadcap.sql.lock.LockManager.getTransaction(), and com.quadcap.sql.lock.LockManager.releaseTransaction().

long com.quadcap.sql.lock.LockManager.transCount = 1 [private]
 

Definition at line 86 of file LockManager.java.