public class LatchedLockManager extends LockManager
lockTableLatches, nLockTables, TOTAL_LOCKIMPL_OVERHEAD, TOTAL_THINLOCKIMPL_OVERHEAD| Constructor and Description |
|---|
LatchedLockManager(EnvironmentImpl envImpl) |
| Modifier and Type | Method and Description |
|---|---|
protected LockAttemptResult |
attemptLock(java.lang.Long nodeId,
Locker locker,
LockType type,
boolean nonBlockingRequest) |
(package private) void |
demote(long nodeId,
Locker locker)
Demote a lock from write to read.
|
protected void |
dumpLockTable(LockStats stats)
Dump the lock table to the lock stats.
|
(package private) Locker |
getWriteOwnerLocker(java.lang.Long nodeId) |
(package private) boolean |
isLocked(java.lang.Long nodeId)
Test the status of the lock on nodeId.
|
(package private) boolean |
isOwner(java.lang.Long nodeId,
Locker locker,
LockType type)
Return true if this locker owns this a lock of this type on given node.
|
(package private) boolean |
isWaiter(java.lang.Long nodeId,
Locker locker)
Return true if this locker is waiting on this lock.
|
protected Lock |
lookupLock(java.lang.Long nodeId) |
protected DeadlockException |
makeTimeoutMsg(java.lang.String lockOrTxn,
Locker locker,
long nodeId,
LockType type,
LockGrantType grantType,
Lock useLock,
long timeout,
long start,
long now,
DatabaseImpl database)
Create a informative lock or txn timeout message.
|
(package private) int |
nOwners(java.lang.Long nodeId)
Return the number of owners of this lock.
|
(package private) int |
nWaiters(java.lang.Long nodeId)
Return the number of waiters for this lock.
|
protected java.util.Set<Locker> |
releaseAndFindNotifyTargets(long nodeId,
Locker locker)
Release the lock, and return the set of new owners to notify, if any.
|
(package private) void |
transfer(long nodeId,
Locker owningLocker,
Locker destLocker,
boolean demoteToRead)
Transfer ownership a lock from one locker to another locker.
|
(package private) void |
transferMultiple(long nodeId,
Locker owningLocker,
Locker[] destLockers)
Transfer ownership a lock from one locker to a set of other txns,
cloning the lock as necessary.
|
protected boolean |
validateOwnership(java.lang.Long nodeId,
Locker locker,
LockType type,
boolean flushFromWaiters,
MemoryBudget mb) |
attemptLockInternal, demoteInternal, dump, dumpLockTableInternal, dumpToString, envConfigUpdate, getLockTableIndex, getLockTableIndex, getWriteOwnerLockerInternal, isLockedInternal, isOwnerInternal, isWaiterInternal, lock, lockStat, lookupLockInternal, makeTimeoutMsgInternal, nOwnersInternal, nWaitersInternal, release, releaseAndFindNotifyTargetsInternal, setLockTableDump, transferInternal, transferMultipleInternal, validateOwnershipInternalpublic LatchedLockManager(EnvironmentImpl envImpl) throws DatabaseException
DatabaseExceptionprotected Lock lookupLock(java.lang.Long nodeId) throws DatabaseException
lookupLock in class LockManagerDatabaseExceptionLockManager.lookupLock(java.lang.Long)protected LockAttemptResult attemptLock(java.lang.Long nodeId, Locker locker, LockType type, boolean nonBlockingRequest) throws DatabaseException
attemptLock in class LockManagerDatabaseExceptionLockManager.attemptLock(java.lang.Long, com.sleepycat.je.txn.Locker, com.sleepycat.je.txn.LockType, boolean)protected DeadlockException makeTimeoutMsg(java.lang.String lockOrTxn, Locker locker, long nodeId, LockType type, LockGrantType grantType, Lock useLock, long timeout, long start, long now, DatabaseImpl database) throws DatabaseException
LockManagermakeTimeoutMsg in class LockManagerDatabaseExceptionLockManager.makeTimeoutMsg(java.lang.String, com.sleepycat.je.txn.Locker, long, com.sleepycat.je.txn.LockType, com.sleepycat.je.txn.LockGrantType, com.sleepycat.je.txn.Lock, long, long, long, com.sleepycat.je.dbi.DatabaseImpl)protected java.util.Set<Locker> releaseAndFindNotifyTargets(long nodeId, Locker locker) throws DatabaseException
LockManagerreleaseAndFindNotifyTargets in class LockManagerDatabaseExceptionLockManager#releaseAndNotifyTargetsvoid transfer(long nodeId,
Locker owningLocker,
Locker destLocker,
boolean demoteToRead)
throws DatabaseException
LockManagertransfer in class LockManagerDatabaseExceptionLockManager.transfer(long, com.sleepycat.je.txn.Locker, com.sleepycat.je.txn.Locker, boolean)void transferMultiple(long nodeId,
Locker owningLocker,
Locker[] destLockers)
throws DatabaseException
LockManagertransferMultiple in class LockManagerDatabaseExceptionLockManager.transferMultiple(long, com.sleepycat.je.txn.Locker, com.sleepycat.je.txn.Locker[])void demote(long nodeId,
Locker locker)
throws DatabaseException
LockManagerdemote in class LockManagerDatabaseExceptionLockManager.demote(long, com.sleepycat.je.txn.Locker)boolean isLocked(java.lang.Long nodeId)
throws DatabaseException
LockManagerisLocked in class LockManagernodeId - The NodeId to check.DatabaseExceptionLockManager.isLocked(java.lang.Long)boolean isOwner(java.lang.Long nodeId,
Locker locker,
LockType type)
throws DatabaseException
LockManagerisOwner in class LockManagerDatabaseExceptionLockManager.isOwner(java.lang.Long, com.sleepycat.je.txn.Locker, com.sleepycat.je.txn.LockType)boolean isWaiter(java.lang.Long nodeId,
Locker locker)
throws DatabaseException
LockManagerisWaiter in class LockManagerDatabaseExceptionLockManager.isWaiter(java.lang.Long, com.sleepycat.je.txn.Locker)int nWaiters(java.lang.Long nodeId)
throws DatabaseException
LockManagernWaiters in class LockManagerDatabaseExceptionLockManager.nWaiters(java.lang.Long)int nOwners(java.lang.Long nodeId)
throws DatabaseException
LockManagernOwners in class LockManagerDatabaseExceptionLockManager.nOwners(java.lang.Long)Locker getWriteOwnerLocker(java.lang.Long nodeId) throws DatabaseException
getWriteOwnerLocker in class LockManagerDatabaseExceptionLockManager#getWriterOwnerLockerprotected boolean validateOwnership(java.lang.Long nodeId,
Locker locker,
LockType type,
boolean flushFromWaiters,
MemoryBudget mb)
throws DatabaseException
protected void dumpLockTable(LockStats stats) throws DatabaseException
LockManagerdumpLockTable in class LockManagerDatabaseExceptionLockManager.dumpLockTable(com.sleepycat.je.LockStats)Copyright (c) 2004,2008 Oracle. All rights reserved.