public abstract class LockManager extends java.lang.Object implements EnvConfigObserver
Modifier and Type | Field and Description |
---|---|
protected Latch[] |
lockTableLatches |
protected int |
nLockTables |
Constructor and Description |
---|
LockManager(EnvironmentImpl envImpl) |
Modifier and Type | Method and Description |
---|---|
protected abstract com.sleepycat.je.txn.LockAttemptResult |
attemptLock(java.lang.Long nodeId,
Locker locker,
LockType type,
boolean nonBlockingRequest) |
protected com.sleepycat.je.txn.LockAttemptResult |
attemptLockInternal(java.lang.Long nodeId,
Locker locker,
LockType type,
boolean nonBlockingRequest,
int lockTableIndex) |
protected void |
demoteInternal(long nodeId,
Locker locker,
int lockTableIndex)
Do the real work of demote.
|
void |
dump()
Debugging
|
protected abstract void |
dumpLockTable(LockStats stats)
Dump the lock table to the lock stats.
|
protected void |
dumpLockTableInternal(LockStats stats,
int i)
Do the real work of dumpLockTableInternal.
|
java.lang.String |
dumpToString() |
void |
envConfigUpdate(DbConfigManager configMgr,
EnvironmentMutableConfig ignore)
Process notifications of mutable property changes.
|
protected int |
getLockTableIndex(long nodeId) |
protected int |
getLockTableIndex(java.lang.Long nodeId) |
protected Locker |
getWriteOwnerLockerInternal(java.lang.Long nodeId,
int lockTableIndex)
Do the real work of getWriteOwnerLocker.
|
protected boolean |
isLockedInternal(java.lang.Long nodeId,
int lockTableIndex)
Do the real work of isLocked.
|
protected boolean |
isOwnerInternal(java.lang.Long nodeId,
Locker locker,
LockType type,
int lockTableIndex)
Do the real work of isOwner.
|
protected boolean |
isWaiterInternal(java.lang.Long nodeId,
Locker locker,
int lockTableIndex)
Do the real work of isWaiter.
|
LockGrantType |
lock(long nodeId,
Locker locker,
LockType type,
long timeout,
boolean nonBlockingRequest,
DatabaseImpl database)
Attempt to acquire a lock of type on nodeId.
|
LockStats |
lockStat(StatsConfig config)
Statistics
|
protected abstract com.sleepycat.je.txn.Lock |
lookupLock(java.lang.Long nodeId) |
protected com.sleepycat.je.txn.Lock |
lookupLockInternal(java.lang.Long nodeId,
int lockTableIndex) |
protected abstract DeadlockException |
makeTimeoutMsg(java.lang.String lockOrTxn,
Locker locker,
long nodeId,
LockType type,
LockGrantType grantType,
com.sleepycat.je.txn.Lock useLock,
long timeout,
long start,
long now,
DatabaseImpl database)
Create a informative lock or txn timeout message.
|
protected DeadlockException |
makeTimeoutMsgInternal(java.lang.String lockOrTxn,
Locker locker,
long nodeId,
LockType type,
LockGrantType grantType,
com.sleepycat.je.txn.Lock useLock,
long timeout,
long start,
long now,
DatabaseImpl database)
Do the real work of creating an lock or txn timeout message.
|
protected int |
nOwnersInternal(java.lang.Long nodeId,
int lockTableIndex)
Do the real work of nWaiters.
|
protected int |
nWaitersInternal(java.lang.Long nodeId,
int lockTableIndex)
Do the real work of nWaiters.
|
boolean |
release(long nodeId,
Locker locker)
Release a lock and possibly notify any waiters that they have been
granted the lock.
|
protected abstract java.util.Set<Locker> |
releaseAndFindNotifyTargets(long nodeId,
Locker locker)
Release the lock, and return the set of new owners to notify, if any.
|
protected java.util.Set<Locker> |
releaseAndFindNotifyTargetsInternal(long nodeId,
Locker locker,
int lockTableIndex)
Do the real work of releaseAndFindNotifyTargets
|
protected void |
transferInternal(long nodeId,
Locker owningLocker,
Locker destLocker,
boolean demoteToRead,
int lockTableIndex)
Do the real work of transfer
|
protected void |
transferMultipleInternal(long nodeId,
Locker owningLocker,
Locker[] destLockers,
int lockTableIndex)
Do the real work of transferMultiple
|
protected abstract boolean |
validateOwnership(java.lang.Long nodeId,
Locker locker,
LockType type,
boolean flushFromWaiters,
MemoryBudget mb) |
protected boolean |
validateOwnershipInternal(java.lang.Long nodeId,
Locker locker,
LockType type,
boolean flushFromWaiters,
MemoryBudget mb,
int lockTableIndex) |
protected int nLockTables
protected Latch[] lockTableLatches
public LockManager(EnvironmentImpl envImpl) throws DatabaseException
DatabaseException
public void envConfigUpdate(DbConfigManager configMgr, EnvironmentMutableConfig ignore) throws DatabaseException
envConfigUpdate
in interface EnvConfigObserver
DatabaseException
protected int getLockTableIndex(java.lang.Long nodeId)
protected int getLockTableIndex(long nodeId)
public LockGrantType lock(long nodeId, Locker locker, LockType type, long timeout, boolean nonBlockingRequest, DatabaseImpl database) throws DeadlockException, DatabaseException
nodeId
- The NodeId to lock.locker
- The Locker to lock this on behalf of.type
- The lock type requested.timeout
- milliseconds to time out after if lock couldn't be
obtained. 0 means block indefinitely. Not used if nonBlockingRequest
is true.nonBlockingRequest
- if true, means don't block if lock can't be
acquired, and ignore the timeout parameter.DeadlockException
- if acquiring the lock would result in
a deadlock.DatabaseException
protected abstract com.sleepycat.je.txn.Lock lookupLock(java.lang.Long nodeId) throws DatabaseException
DatabaseException
protected com.sleepycat.je.txn.Lock lookupLockInternal(java.lang.Long nodeId, int lockTableIndex) throws DatabaseException
DatabaseException
protected abstract com.sleepycat.je.txn.LockAttemptResult attemptLock(java.lang.Long nodeId, Locker locker, LockType type, boolean nonBlockingRequest) throws DatabaseException
DatabaseException
protected com.sleepycat.je.txn.LockAttemptResult attemptLockInternal(java.lang.Long nodeId, Locker locker, LockType type, boolean nonBlockingRequest, int lockTableIndex) throws DatabaseException
DatabaseException
protected abstract DeadlockException makeTimeoutMsg(java.lang.String lockOrTxn, Locker locker, long nodeId, LockType type, LockGrantType grantType, com.sleepycat.je.txn.Lock useLock, long timeout, long start, long now, DatabaseImpl database) throws DatabaseException
DatabaseException
protected DeadlockException makeTimeoutMsgInternal(java.lang.String lockOrTxn, Locker locker, long nodeId, LockType type, LockGrantType grantType, com.sleepycat.je.txn.Lock useLock, long timeout, long start, long now, DatabaseImpl database)
public boolean release(long nodeId, Locker locker) throws DatabaseException
nodeId
- The node ID of the lock to release.DatabaseException
protected abstract java.util.Set<Locker> releaseAndFindNotifyTargets(long nodeId, Locker locker) throws DatabaseException
DatabaseException
protected java.util.Set<Locker> releaseAndFindNotifyTargetsInternal(long nodeId, Locker locker, int lockTableIndex) throws DatabaseException
DatabaseException
protected void transferInternal(long nodeId, Locker owningLocker, Locker destLocker, boolean demoteToRead, int lockTableIndex) throws DatabaseException
DatabaseException
protected void transferMultipleInternal(long nodeId, Locker owningLocker, Locker[] destLockers, int lockTableIndex) throws DatabaseException
DatabaseException
protected void demoteInternal(long nodeId, Locker locker, int lockTableIndex) throws DatabaseException
DatabaseException
protected boolean isLockedInternal(java.lang.Long nodeId, int lockTableIndex)
protected boolean isOwnerInternal(java.lang.Long nodeId, Locker locker, LockType type, int lockTableIndex)
protected boolean isWaiterInternal(java.lang.Long nodeId, Locker locker, int lockTableIndex)
protected int nWaitersInternal(java.lang.Long nodeId, int lockTableIndex)
protected int nOwnersInternal(java.lang.Long nodeId, int lockTableIndex)
protected Locker getWriteOwnerLockerInternal(java.lang.Long nodeId, int lockTableIndex) throws DatabaseException
DatabaseException
protected abstract boolean validateOwnership(java.lang.Long nodeId, Locker locker, LockType type, boolean flushFromWaiters, MemoryBudget mb) throws DatabaseException
DatabaseException
protected boolean validateOwnershipInternal(java.lang.Long nodeId, Locker locker, LockType type, boolean flushFromWaiters, MemoryBudget mb, int lockTableIndex) throws DatabaseException
DatabaseException
public LockStats lockStat(StatsConfig config) throws DatabaseException
DatabaseException
protected abstract void dumpLockTable(LockStats stats) throws DatabaseException
DatabaseException
protected void dumpLockTableInternal(LockStats stats, int i)
public void dump() throws DatabaseException
DatabaseException
public java.lang.String dumpToString() throws DatabaseException
DatabaseException