private static class CycleDetectingLockFactory.LockGraphNode
extends java.lang.Object
LockGraphNode associated with each lock instance keeps track of the directed edges in
the lock acquisition graph.| Modifier and Type | Field and Description |
|---|---|
(package private) java.util.Map<CycleDetectingLockFactory.LockGraphNode,CycleDetectingLockFactory.ExampleStackTrace> |
allowedPriorLocks
The map tracking the locks that are known to be acquired before this lock, each associated
with an example stack trace.
|
(package private) java.util.Map<CycleDetectingLockFactory.LockGraphNode,CycleDetectingLockFactory.PotentialDeadlockException> |
disallowedPriorLocks
The map tracking lock nodes that can cause a lock acquisition cycle if acquired before this
node.
|
(package private) java.lang.String |
lockName |
| Constructor and Description |
|---|
LockGraphNode(java.lang.String lockName) |
| Modifier and Type | Method and Description |
|---|---|
(package private) void |
checkAcquiredLock(CycleDetectingLockFactory.Policy policy,
CycleDetectingLockFactory.LockGraphNode acquiredLock)
Checks the acquisition-ordering between
this, which is about to be acquired, and the
specified acquiredLock. |
(package private) void |
checkAcquiredLocks(CycleDetectingLockFactory.Policy policy,
java.util.List<CycleDetectingLockFactory.LockGraphNode> acquiredLocks) |
private CycleDetectingLockFactory.ExampleStackTrace |
findPathTo(CycleDetectingLockFactory.LockGraphNode node,
java.util.Set<CycleDetectingLockFactory.LockGraphNode> seen)
Performs a depth-first traversal of the graph edges defined by each node's
allowedPriorLocks to find a path between this and the specified lock. |
(package private) java.lang.String |
getLockName() |
final java.util.Map<CycleDetectingLockFactory.LockGraphNode,CycleDetectingLockFactory.ExampleStackTrace> allowedPriorLocks
final java.util.Map<CycleDetectingLockFactory.LockGraphNode,CycleDetectingLockFactory.PotentialDeadlockException> disallowedPriorLocks
final java.lang.String lockName
java.lang.String getLockName()
void checkAcquiredLocks(CycleDetectingLockFactory.Policy policy, java.util.List<CycleDetectingLockFactory.LockGraphNode> acquiredLocks)
void checkAcquiredLock(CycleDetectingLockFactory.Policy policy, CycleDetectingLockFactory.LockGraphNode acquiredLock)
this, which is about to be acquired, and the
specified acquiredLock.
When this method returns, the acquiredLock should be in either the preAcquireLocks map, for the case in which it is safe to acquire this after the
acquiredLock, or in the disallowedPriorLocks map, in which case it is not
safe.
@CheckForNull private CycleDetectingLockFactory.ExampleStackTrace findPathTo(CycleDetectingLockFactory.LockGraphNode node, java.util.Set<CycleDetectingLockFactory.LockGraphNode> seen)
allowedPriorLocks to find a path between this and the specified lock.CycleDetectingLockFactory.ExampleStackTrace illustrating the path to the
lock, or null if no path was found.