public class SyncedLockManager extends LockManager
lockTableLatches, nLockTables, TOTAL_LOCKIMPL_OVERHEAD, TOTAL_THINLOCKIMPL_OVERHEAD| Constructor and Description |
|---|
SyncedLockManager(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 SyncedLockManager(EnvironmentImpl envImpl) throws DatabaseException
DatabaseExceptionprotected Lock lookupLock(java.lang.Long nodeId) throws DatabaseException
lookupLock in class LockManagerDatabaseExceptionLockManager.attemptLock(java.lang.Long, com.sleepycat.je.txn.Locker, com.sleepycat.je.txn.LockType, boolean)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)
LockManagerprotected 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)
LockManagerisLocked in class LockManagernodeId - The NodeId to check.LockManager.isLocked(java.lang.Long)boolean isOwner(java.lang.Long nodeId,
Locker locker,
LockType type)
LockManagerisOwner in class LockManagerLockManager.isOwner(java.lang.Long, com.sleepycat.je.txn.Locker, com.sleepycat.je.txn.LockType)boolean isWaiter(java.lang.Long nodeId,
Locker locker)
LockManagerisWaiter in class LockManagerLockManager.isWaiter(java.lang.Long, com.sleepycat.je.txn.Locker)int nWaiters(java.lang.Long nodeId)
LockManagernWaiters in class LockManagerLockManager.nWaiters(java.lang.Long)int nOwners(java.lang.Long nodeId)
LockManagernOwners in class LockManagerLockManager.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.