ContainerLocking2
, ContainerLocking3
, NoLocking
, RowLocking1
, RowLocking2
, RowLocking2nohold
, RowLocking3
, RowLocking3Escalate
, RowLockingRR
public interface LockingPolicy
The locking policy must use the defined lock qualifiers (ContainerLock.CIS, RowLock.RS, etc.) and the standard lock manager. (A locking policy that just performs no locking wouldn't need to use these :-)
A locking policy must use the object that is an instance of Transaction
(originally obtained via startTransaction() in RawStoreFactory) as the
compatibilitySpace for the LockFactory calls.
A locking policy must use the passed in transaction as the
compatability space and the lock group.
This chain (group) of locks has the following defined behaviour
ContainerHandle
,
RecordHandle
,
LockFactory
,
Lockable
Modifier and Type | Field | Description |
---|---|---|
static int |
MODE_CONTAINER |
ContainerHandle level locking.
|
static int |
MODE_NONE |
No locking what so ever, isolation parameter will be ignored by
getLockingPolicy().
|
static int |
MODE_RECORD |
Record level locking.
|
Modifier and Type | Method | Description |
---|---|---|
int |
getMode() |
Get the mode of this policy
|
boolean |
lockContainer(Transaction t,
ContainerHandle container,
boolean waitForLock,
boolean forUpdate) |
Called when a container is opened.
|
boolean |
lockRecordForRead(Transaction t,
ContainerHandle container,
RecordHandle record,
boolean waitForLock,
boolean forUpdate) |
Called before a record is fetched.
|
boolean |
lockRecordForWrite(Transaction t,
RecordHandle record,
boolean lockForInsert,
boolean waitForLock) |
Called before a record is inserted, updated or deleted.
|
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 lockForPreviousKey,
boolean waitForLock) |
Request a write lock which will be released immediately upon grant.
|
static final int MODE_NONE
RawStoreFactory
,
Constant Field Valuesstatic final int MODE_RECORD
static final int MODE_CONTAINER
boolean lockContainer(Transaction t, ContainerHandle container, boolean waitForLock, boolean forUpdate) throws StandardException
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 Derby error policyContainerHandle
void unlockContainer(Transaction t, ContainerHandle container)
ContainerHandle
,
ContainerHandle.close()
boolean lockRecordForRead(Transaction t, ContainerHandle container, RecordHandle record, boolean waitForLock, boolean forUpdate) throws StandardException
t
- Transaction to associate lock with.container
- Open Container used to get record. Will be used
to row locks by the container they belong to.record
- Record to lock.waitForLock
- Should lock request wait until granted?forUpdate
- Should container be locked for update, or read?StandardException
- Standard Derby error policyPage
boolean zeroDurationLockRecordForWrite(Transaction t, RecordHandle record, boolean lockForPreviousKey, boolean waitForLock) throws StandardException
t
- Transaction to associate lock with.record
- Record to lock.lockForPreviousKey
- Lock is for a previous key of a insert.waitForLock
- Should lock request wait until granted?StandardException
- Standard Derby error policyPage
boolean lockRecordForWrite(Transaction t, RecordHandle record, boolean lockForInsert, boolean waitForLock) throws StandardException
t
- Transaction to associate lock with.record
- Record to lock.lockForInsert
- Lock is for an insert.waitForLock
- Should lock request wait until granted?StandardException
- Standard Derby error policyPage
void unlockRecordAfterRead(Transaction t, ContainerHandle container, RecordHandle record, boolean forUpdate, boolean row_qualified) throws StandardException
StandardException
- Standard Derby error policyPage
int getMode()
Apache Derby V10.14 Internals - Copyright © 2004,2018 The Apache Software Foundation. All Rights Reserved.