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 LockMonitoring
LockMonitoring.Wrapper<T> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Stringprivate static final ConcurrentCleanerprivate intprivate final Map<LockTracking.SimpleLock<T>, WeakReference<LockTracking.SimpleLock<T>>> static final intprivate final org.slf4j.Loggerprivate longprivate longprivate static final AtomicLongprivate final booleanprivate final ReentrantLockprivate final Lock.ExtendedSupplier<T> private final intFields inherited from interface 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 longgetLock()private LockTracking.SimpleLock<T> getLockInner(T lock, String alias) private voidbooleanvoidtryLock()voidunregister(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:
runCleanupin interfaceLockMonitoring<T extends Lock>
-
getLock
- Specified by:
getLockin interfaceLockMonitoring<T extends Lock>- Throws:
InterruptedException
-
getLock
- Specified by:
getLockin interfaceLockMonitoring<T extends Lock>- Throws:
InterruptedException
-
unsafeInnerLock
- Specified by:
unsafeInnerLockin interfaceLockMonitoring<T extends Lock>
-
tryLock
- Specified by:
tryLockin interfaceLockMonitoring<T extends Lock>
-
getLockInner
-
requiresManualCleanup
public boolean requiresManualCleanup()- Specified by:
requiresManualCleanupin interfaceLockMonitoring<T extends Lock>
-
register
-
unregister
- Specified by:
unregisterin interfaceLockMonitoring<T extends Lock>
-