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 |
|---|---|
(package private) LockAttemptResult |
attemptLock(java.lang.Long lsn,
Locker locker,
LockType type,
boolean nonBlockingRequest,
boolean jumpAheadOfWaiters) |
(package private) void |
demote(long lsn,
Locker locker)
Demote a lock from write to read.
|
(package private) void |
dumpLockTable(StatGroup stats,
boolean clear)
Dump the lock table to the lock stats.
|
LockType |
getOwnedLockType(java.lang.Long lsn,
Locker locker)
Returns the LockType if the given locker owns a lock on the given node,
or null if the lock is not owned.
|
java.util.Set<LockInfo> |
getOwners(java.lang.Long lsn)
Returns the Lockers that own a lock on the given LSN.
|
(package private) Locker |
getWriteOwnerLocker(java.lang.Long lsn) |
(package private) boolean |
isLocked(java.lang.Long lsn)
Test the status of the lock on LSN.
|
boolean |
isLockUncontended(java.lang.Long lsn) |
(package private) boolean |
isOwner(java.lang.Long lsn,
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 lsn,
Locker locker)
Return true if this locker is waiting on this lock.
|
(package private) Lock |
lookupLock(java.lang.Long lsn) |
(package private) LockConflictException |
makeTimeoutMsg(boolean isLockNotTxnTimeout,
Locker locker,
long lsn,
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 lsn)
Return the number of owners of this lock.
|
(package private) int |
nWaiters(java.lang.Long lsn)
Return the number of waiters for this lock.
|
(package private) java.util.Set<Locker> |
releaseAndFindNotifyTargets(long lsn,
Locker locker)
Release the lock, and return the set of new owners to notify, if any.
|
protected LockAttemptResult |
stealLock(java.lang.Long lsn,
Locker locker,
LockType lockType,
MemoryBudget mb) |
(package private) boolean |
validateOwnership(java.lang.Long lsn,
Locker locker,
LockType type,
boolean flushFromWaiters,
MemoryBudget mb) |
attemptLockInternal, demoteInternal, dump, dumpLockTableInternal, dumpToString, envConfigUpdate, getLockTableIndex, getLockTableIndex, getOwnedLockTypeInternal, getOwnersInternal, getThreadLockers, getWriteOwnerLockerInternal, isLockedInternal, isLockUncontendedInternal, isOwnerInternal, isWaiterInternal, loadStats, lock, lockStat, lookupLockInternal, makeTimeoutMsgInternal, newLockNotAvailableException, nOwnersInternal, nWaitersInternal, registerThreadLocker, release, releaseAndFindNotifyTargetsInternal, setLockTableDump, stealLockInternal, unregisterThreadLocker, validateOwnershipInternalpublic SyncedLockManager(EnvironmentImpl envImpl)
public java.util.Set<LockInfo> getOwners(java.lang.Long lsn)
LockManagergetOwners in class LockManagerpublic LockType getOwnedLockType(java.lang.Long lsn, Locker locker)
LockManagergetOwnedLockType in class LockManagerpublic boolean isLockUncontended(java.lang.Long lsn)
isLockUncontended in class LockManagerLock lookupLock(java.lang.Long lsn)
LockAttemptResult attemptLock(java.lang.Long lsn, Locker locker, LockType type, boolean nonBlockingRequest, boolean jumpAheadOfWaiters) throws DatabaseException
attemptLock in class LockManagerDatabaseExceptionLockManager.attemptLock(java.lang.Long, com.sleepycat.je.txn.Locker, com.sleepycat.je.txn.LockType, boolean, boolean)LockConflictException makeTimeoutMsg(boolean isLockNotTxnTimeout, Locker locker, long lsn, LockType type, LockGrantType grantType, Lock useLock, long timeout, long start, long now, DatabaseImpl database)
LockManagerjava.util.Set<Locker> releaseAndFindNotifyTargets(long lsn, Locker locker)
LockManagerreleaseAndFindNotifyTargets in class LockManagerLockManager#releaseAndNotifyTargetsvoid demote(long lsn,
Locker locker)
LockManagerdemote in class LockManagerLockManager.demote(long, com.sleepycat.je.txn.Locker)boolean isLocked(java.lang.Long lsn)
LockManagerisLocked in class LockManagerlsn - The LSN to check.LockManager.isLocked(java.lang.Long)boolean isOwner(java.lang.Long lsn,
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 lsn,
Locker locker)
LockManagerisWaiter in class LockManagerLockManager.isWaiter(java.lang.Long, com.sleepycat.je.txn.Locker)int nWaiters(java.lang.Long lsn)
LockManagernWaiters in class LockManagerLockManager.nWaiters(java.lang.Long)int nOwners(java.lang.Long lsn)
LockManagernOwners in class LockManagerLockManager.nOwners(java.lang.Long)Locker getWriteOwnerLocker(java.lang.Long lsn)
getWriteOwnerLocker in class LockManagerLockManager#getWriterOwnerLockerboolean validateOwnership(java.lang.Long lsn,
Locker locker,
LockType type,
boolean flushFromWaiters,
MemoryBudget mb)
protected LockAttemptResult stealLock(java.lang.Long lsn, Locker locker, LockType lockType, MemoryBudget mb) throws DatabaseException
void dumpLockTable(StatGroup stats, boolean clear)
LockManagerdumpLockTable in class LockManagerLockManager.dumpLockTable(com.sleepycat.je.utilint.StatGroup, boolean)Copyright (c) 2004-2012 Oracle. All rights reserved.