|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.derby.impl.store.raw.xact.NoLocking
org.apache.derby.impl.store.raw.xact.RowLocking3
A locking policy that implements row level locking with isolation degree 3.
LockingPolicy
Field Summary | |
protected LockFactory |
lf
|
private static LockingPolicy |
NO_LOCK
|
Fields inherited from interface org.apache.derby.iapi.store.raw.LockingPolicy |
MODE_CONTAINER, MODE_NONE, MODE_RECORD |
Constructor Summary | |
protected |
RowLocking3(LockFactory lf)
|
Method Summary | |
int |
getMode()
Get the mode of this policy |
protected RowLock |
getReadLockType()
Get type of lock to get while reading data. |
protected RowLock |
getUpdateLockType()
Get type of lock to get while requesting "update" lock. |
protected RowLock |
getWriteLockType()
Get type of lock to get while writing data. |
boolean |
lockContainer(Transaction t,
ContainerHandle container,
boolean waitForLock,
boolean forUpdate)
Obtain container level intent lock. |
void |
lockRecordForRead(Latch latch,
RecordHandle record,
boolean forUpdate)
Obtain lock on record being read while holding a latch. |
boolean |
lockRecordForRead(Transaction t,
ContainerHandle container_handle,
RecordHandle record,
boolean waitForLock,
boolean forUpdate)
Obtain lock on record being read. |
void |
lockRecordForWrite(Latch latch,
RecordHandle record)
Obtain lock on record being written while holding a latch. |
boolean |
lockRecordForWrite(Transaction t,
RecordHandle record,
boolean lockForInsert,
boolean waitForLock)
Obtain lock on record being written. |
void |
unlockContainer(Transaction t,
ContainerHandle container)
Called when a container is closed. |
void |
unlockRecordAfterRead(Transaction t,
ContainerHandle container,
RecordHandle record,
boolean forUpdate,
boolean row_qualified)
Called after a record has been fetched. |
boolean |
zeroDurationLockRecordForWrite(Transaction t,
RecordHandle record,
boolean lockForInsertPreviousKey,
boolean waitForLock)
Obtain lock on record being written. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private static final LockingPolicy NO_LOCK
protected final LockFactory lf
Constructor Detail |
protected RowLocking3(LockFactory lf)
Method Detail |
protected RowLock getReadLockType()
This routine is provided so that class's like RowLockingRR can override just this routine to get RS2 locks vs RS3 locks, and still reuse all the other code in this class.
protected RowLock getUpdateLockType()
This routine is provided so that class's like RowLockingRR can override just this routine to get RU2 locks vs RU3 locks, and still reuse all the other code in this class.
protected RowLock getWriteLockType()
This routine is provided so that class's like RowLockingRR can override just this routine to get RX2 locks vs RX3 locks, and still reuse all the other code in this class.
public boolean lockContainer(Transaction t, ContainerHandle container, boolean waitForLock, boolean forUpdate) throws StandardException
This implementation of row locking is 2 level, ie. table and row locking. It will interact correctly with tables opened with ContainerLocking3 locking mode.
Updater's will get table level IX locks, and X row locks.
Reader's will get table level IS locks, and S row locks.
lockContainer
in interface LockingPolicy
lockContainer
in class NoLocking
t
- Transaction to associate lock with.container
- Container to lock.waitForLock
- Should lock request wait until granted?forUpdate
- Should container be locked for update, or read?
StandardException
- Standard exception policy.public boolean lockRecordForRead(Transaction t, ContainerHandle container_handle, RecordHandle record, boolean waitForLock, boolean forUpdate) throws StandardException
Assumes that a table level IS has been acquired. Will acquire a Shared or Update lock on the row, depending on the "forUpdate" parameter.
lockRecordForRead
in interface LockingPolicy
lockRecordForRead
in class NoLocking
t
- The transaction to associate the lock with.record
- The record to be locked.waitForLock
- Should lock request wait until granted?forUpdate
- Whether to open for read or write access.
StandardException
- Standard exception policy.public void lockRecordForRead(Latch latch, RecordHandle record, boolean forUpdate) throws StandardException
Assumes that a table level IS has been acquired. Will acquire a Shared or Update lock on the row, depending on the "forUpdate" parameter.
lockRecordForRead
in interface LockingPolicy
lockRecordForRead
in class NoLocking
latch
- The latch being held.record
- The record to be locked.forUpdate
- Whether to open for read or write access.
StandardException
- Standard exception policy.public boolean zeroDurationLockRecordForWrite(Transaction t, RecordHandle record, boolean lockForInsertPreviousKey, boolean waitForLock) throws StandardException
Assumes that a table level IX has been acquired. Will acquire an Exclusive (X) lock on the row.
zeroDurationLockRecordForWrite
in interface LockingPolicy
zeroDurationLockRecordForWrite
in class NoLocking
t
- transaction to associate the lock with.record
- The record to be locked.lockForInsertPreviousKey
- Lock is for a previous key of a insert.waitForLock
- Should lock request wait until granted?
StandardException
- Standard exception policy.public boolean lockRecordForWrite(Transaction t, RecordHandle record, boolean lockForInsert, boolean waitForLock) throws StandardException
Assumes that a table level IX has been acquired. Will acquire an Exclusive (X) lock on the row.
lockRecordForWrite
in interface LockingPolicy
lockRecordForWrite
in class NoLocking
t
- The transaction to associate the lock with.record
- The record to be locked.lockForInsert
- Lock is for an insert.waitForLock
- Should lock request wait until granted?
StandardException
- Standard exception policy.public void lockRecordForWrite(Latch latch, RecordHandle record) throws StandardException
Assumes that a table level IX has been acquired. Will acquire an Exclusive (X) lock on the row.
lockRecordForWrite
in interface LockingPolicy
lockRecordForWrite
in class NoLocking
latch
- The latch being heldrecord
- The record to be locked.
StandardException
- Standard exception policy.public int getMode()
LockingPolicy
getMode
in interface LockingPolicy
getMode
in class NoLocking
public void unlockContainer(Transaction t, ContainerHandle container)
LockingPolicy
unlockContainer
in interface LockingPolicy
ContainerHandle
,
ContainerHandle.close()
public void unlockRecordAfterRead(Transaction t, ContainerHandle container, RecordHandle record, boolean forUpdate, boolean row_qualified) throws StandardException
LockingPolicy
unlockRecordAfterRead
in interface LockingPolicy
StandardException
- Standard Cloudscape error policyPage
|
Built on Tue 2006-10-10 19:23:47+0200, from revision exported | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |