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, validateOwnershipInternal
public SyncedLockManager(EnvironmentImpl envImpl)
public java.util.Set<LockInfo> getOwners(java.lang.Long lsn)
LockManager
getOwners
in class LockManager
public LockType getOwnedLockType(java.lang.Long lsn, Locker locker)
LockManager
getOwnedLockType
in class LockManager
public boolean isLockUncontended(java.lang.Long lsn)
isLockUncontended
in class LockManager
Lock lookupLock(java.lang.Long lsn)
LockAttemptResult attemptLock(java.lang.Long lsn, Locker locker, LockType type, boolean nonBlockingRequest, boolean jumpAheadOfWaiters) throws DatabaseException
attemptLock
in class LockManager
DatabaseException
LockManager.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)
LockManager
java.util.Set<Locker> releaseAndFindNotifyTargets(long lsn, Locker locker)
LockManager
releaseAndFindNotifyTargets
in class LockManager
LockManager#releaseAndNotifyTargets
void demote(long lsn, Locker locker)
LockManager
demote
in class LockManager
LockManager.demote(long, com.sleepycat.je.txn.Locker)
boolean isLocked(java.lang.Long lsn)
LockManager
isLocked
in class LockManager
lsn
- The LSN to check.LockManager.isLocked(java.lang.Long)
boolean isOwner(java.lang.Long lsn, Locker locker, LockType type)
LockManager
isOwner
in class LockManager
LockManager.isOwner(java.lang.Long, com.sleepycat.je.txn.Locker, com.sleepycat.je.txn.LockType)
boolean isWaiter(java.lang.Long lsn, Locker locker)
LockManager
isWaiter
in class LockManager
LockManager.isWaiter(java.lang.Long, com.sleepycat.je.txn.Locker)
int nWaiters(java.lang.Long lsn)
LockManager
nWaiters
in class LockManager
LockManager.nWaiters(java.lang.Long)
int nOwners(java.lang.Long lsn)
LockManager
nOwners
in class LockManager
LockManager.nOwners(java.lang.Long)
Locker getWriteOwnerLocker(java.lang.Long lsn)
getWriteOwnerLocker
in class LockManager
LockManager#getWriterOwnerLocker
boolean 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)
LockManager
dumpLockTable
in class LockManager
LockManager.dumpLockTable(com.sleepycat.je.utilint.StatGroup, boolean)
Copyright (c) 2004-2012 Oracle. All rights reserved.