final class LockSpace extends java.lang.Object implements CompatibilitySpace
A LockSpace
can have an owner (for instance a
transaction). Currently, the owner is used by the virtual lock table to
find out which transaction a lock belongs to. Some parts of the code also
use the owner as a group object which guarantees that the lock is released
on a commit or an abort. The owner has no special meaning to the lock
manager and can be any object, including null
.
Modifier and Type | Field and Description |
---|---|
private Limit |
callback |
private java.lang.Object |
callbackGroup |
private java.util.HashMap<java.lang.Object,java.util.HashMap<Lock,Lock>> |
groups
Map from group references to groups of locks.
|
private boolean |
inLimit |
private int |
limit |
private static int |
MAX_CACHED_GROUPS
The maximum number of elements to cache in
spareGroups . |
private int |
nextLimitCall |
private LockOwner |
owner
Reference to the owner of this compatibility space.
|
private java.util.ArrayDeque<java.util.HashMap<Lock,Lock>> |
spareGroups
Cached HashMaps for storing lock groups.
|
Constructor and Description |
---|
LockSpace(LockOwner owner)
Creates a new
LockSpace instance. |
Modifier and Type | Method and Description |
---|---|
protected void |
addLock(java.lang.Object group,
Lock lock)
Add a lock to a group.
|
(package private) boolean |
areLocksHeld()
Return true if locks are held in this compatibility space.
|
(package private) boolean |
areLocksHeld(java.lang.Object group)
Return true if locks are held in a group
|
(package private) void |
clearLimit(java.lang.Object group)
Clear a limit set by setLimit.
|
(package private) int |
deadlockCount(int bail)
Return a count of the number of locks
held by this space.
|
private java.util.HashMap<Lock,Lock> |
getGroupMap(java.lang.Object group) |
LockOwner |
getOwner()
Get the object representing the owner of the compatibility space.
|
(package private) boolean |
isLockHeld(java.lang.Object group,
Lockable ref,
java.lang.Object qualifier) |
private void |
mergeGroups(java.util.HashMap<Lock,Lock> from,
java.util.HashMap<Lock,Lock> into) |
private void |
saveGroup(java.util.HashMap<Lock,Lock> dl) |
(package private) void |
setLimit(java.lang.Object group,
int limit,
Limit callback) |
(package private) void |
transfer(java.lang.Object oldGroup,
java.lang.Object newGroup) |
(package private) void |
unlockGroup(LockTable lset,
java.lang.Object group)
Unlock all the locks in a group and then remove the group.
|
(package private) void |
unlockGroup(LockTable lset,
java.lang.Object group,
Matchable key)
Unlock all locks in the group that match the key
|
(package private) int |
unlockReference(LockTable lset,
Lockable ref,
java.lang.Object qualifier,
java.lang.Object group) |
private final java.util.HashMap<java.lang.Object,java.util.HashMap<Lock,Lock>> groups
private final LockOwner owner
private static final int MAX_CACHED_GROUPS
spareGroups
.private final java.util.ArrayDeque<java.util.HashMap<Lock,Lock>> spareGroups
private java.lang.Object callbackGroup
private int limit
private int nextLimitCall
private Limit callback
private boolean inLimit
LockSpace(LockOwner owner)
LockSpace
instance.owner
- an object representing the owner of the compatibility spacepublic LockOwner getOwner()
getOwner
in interface CompatibilitySpace
protected void addLock(java.lang.Object group, Lock lock) throws StandardException
StandardException
void unlockGroup(LockTable lset, java.lang.Object group)
void unlockGroup(LockTable lset, java.lang.Object group, Matchable key)
void transfer(java.lang.Object oldGroup, java.lang.Object newGroup)
private void mergeGroups(java.util.HashMap<Lock,Lock> from, java.util.HashMap<Lock,Lock> into)
int unlockReference(LockTable lset, Lockable ref, java.lang.Object qualifier, java.lang.Object group)
boolean areLocksHeld(java.lang.Object group)
boolean areLocksHeld()
boolean isLockHeld(java.lang.Object group, Lockable ref, java.lang.Object qualifier)
void setLimit(java.lang.Object group, int limit, Limit callback)
void clearLimit(java.lang.Object group)
int deadlockCount(int bail)
Apache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.