Class LockTracking<T extends Lock>
java.lang.Object
org.eclipse.rdf4j.common.concurrent.locks.diagnostics.LockTracking<T>
- All Implemented Interfaces:
LockMonitoring<T>
@InternalUseOnly
public class LockTracking<T extends Lock>
extends Object
implements LockMonitoring<T>
Full tracking of locks with simple deadlock detection and logging as well as automatic release of abandoned locks
(same as LockCleaner).
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface org.eclipse.rdf4j.common.concurrent.locks.diagnostics.LockMonitoring
LockMonitoring.Wrapper<T extends Lock>
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final String
private static final ConcurrentCleaner
private int
private final Map
<LockTracking.SimpleLock<T>, WeakReference<LockTracking.SimpleLock<T>>> static final int
private final org.slf4j.Logger
private long
private long
private static final AtomicLong
private final boolean
private final ReentrantLock
private final Lock.ExtendedSupplier
<T> private final int
Fields inherited from interface org.eclipse.rdf4j.common.concurrent.locks.diagnostics.LockMonitoring
INITIAL_WAIT_TO_COLLECT
-
Constructor Summary
ConstructorsConstructorDescriptionLockTracking
(boolean stacktrace, String alias, org.slf4j.Logger logger, int waitToCollect, Lock.ExtendedSupplier<T> supplier) -
Method Summary
Modifier and TypeMethodDescriptionprivate long
getLock()
private LockTracking.SimpleLock
<T> getLockInner
(T lock, String alias) private void
boolean
void
tryLock()
void
unregister
(Lock lock) unsafeInnerLock
(Lock lock)
-
Field Details
-
LOGGED_STALLED_LOCKS_MINIMUM_WAIT_TO_COLLECT
public static final int LOGGED_STALLED_LOCKS_MINIMUM_WAIT_TO_COLLECT- See Also:
-
logger
private final org.slf4j.Logger logger -
cleaner
-
seq
-
staleLoggingLock
-
locks
private final Map<LockTracking.SimpleLock<T extends Lock>,WeakReference<LockTracking.SimpleLock<T extends Lock>>> locks -
supplier
-
stacktrace
private final boolean stacktrace -
waitToCollect
private final int waitToCollect -
alias
-
currentWaitToCollect
private int currentWaitToCollect -
previousCleanup
private long previousCleanup -
previousActiveLocksSignature
private long previousActiveLocksSignature
-
-
Constructor Details
-
LockTracking
public LockTracking(boolean stacktrace, String alias, org.slf4j.Logger logger, int waitToCollect, Lock.ExtendedSupplier<T> supplier)
-
-
Method Details
-
getActiveLocksSignature
private long getActiveLocksSignature() -
logStalledLocks
private void logStalledLocks() -
runCleanup
public void runCleanup()- Specified by:
runCleanup
in interfaceLockMonitoring<T extends Lock>
-
getLock
- Specified by:
getLock
in interfaceLockMonitoring<T extends Lock>
- Throws:
InterruptedException
-
getLock
- Specified by:
getLock
in interfaceLockMonitoring<T extends Lock>
- Throws:
InterruptedException
-
unsafeInnerLock
- Specified by:
unsafeInnerLock
in interfaceLockMonitoring<T extends Lock>
-
tryLock
- Specified by:
tryLock
in interfaceLockMonitoring<T extends Lock>
-
getLockInner
-
requiresManualCleanup
public boolean requiresManualCleanup()- Specified by:
requiresManualCleanup
in interfaceLockMonitoring<T extends Lock>
-
register
- Specified by:
register
in interfaceLockMonitoring<T extends Lock>
-
unregister
- Specified by:
unregister
in interfaceLockMonitoring<T extends Lock>
-