Uses of Class
org.eclipse.persistence.internal.helper.ConcurrencyManager
Package
Description
-
Uses of ConcurrencyManager in org.eclipse.persistence.internal.helper
Modifier and TypeFieldDescriptionprotected Vector
<ConcurrencyManager> DeferredLockManager.activeLocks
protected Vector
<ConcurrencyManager> DeferredLockManager.deferredLocks
Modifier and TypeMethodDescriptionstatic Map
<Thread, ConcurrencyManager> ConcurrencyUtil.cloneMapThreadToWaitOnAcquire
(Map<Thread, ConcurrencyManager> mapThreadToWaitOnAcquireOriginal) Clone the static map of the concurrency manager that tells us about threads waiting to acquire locks.static Map
<Thread, Set<ConcurrencyManager>> ConcurrencyUtil.cloneMapThreadToWaitOnAcquireInsideWriteLockManagerOriginal
(Map<Thread, Set<ConcurrencyManager>> mapThreadToWaitOnAcquireInsideWriteLockManagerOriginal) Clone the static map of the concurrency manager that tells us about threads waiting to acquire locks.DeferredLockManager.getActiveLocks()
Return a set of the active locks from the DLMDeferredLockManager.getDeferredLocks()
Return a set of the deferred locksReadLockManager.getReadLocks()
Return a set of the deferred locksstatic Map
<Thread, ConcurrencyManager> ConcurrencyManager.getThreadsToWaitOnAcquire()
Getter forTHREADS_TO_WAIT_ON_ACQUIRE
static Map
<Thread, ConcurrencyManager> ConcurrencyManager.getThreadsToWaitOnAcquireReadLock()
Getter forTHREADS_TO_WAIT_ON_ACQUIRE_READ_LOCK
static Map
<Thread, Set<ConcurrencyManager>> WriteLockManager.getThreadToFailToAcquireCacheKeys()
Getter forWriteLockManager.THREAD_TO_FAIL_TO_ACQUIRE_CACHE_KEYS
Modifier and TypeMethodDescriptionstatic void
WriteLockManager.addCacheKeyToMapWriteLockManagerToCacheKeysThatCouldNotBeAcquired
(Thread thread, ConcurrencyManager cacheKeyThatCouldNotBeAcquired, long whileStartDate) The thread was doing its while loop to acquire all required locks to proceed with the commmit and it realized there was one cache key it is unable to acquirevoid
ReadLockManager.addReadLock
(ConcurrencyManager concurrencyManager) add a concurrency manager as deferred locks to the DLMprotected String
ConcurrencyUtil.createInformationAboutAllResourcesAcquiredAndDeferredByThread
(ReadLockManager readLockManager, DeferredLockManager lockManager, Set<ConcurrencyManager> waitingOnAcquireCacheKeys, ConcurrencyManager waitingOnAcquireReadCacheKey, boolean threadWaitingToReleaseDeferredLocks, Thread thread, int currentThreadNumber, int totalNumberOfThreads, Set<Object> writeManagerThreadPrimaryKeysWithChangesToBeMerged, String waitingToReleaseDeferredLocksJustification) Build a string that tries to describe in as much detail as possible the resources associated to the current thread.ConcurrencyUtil.createReadLockAcquisitionMetadata
(ConcurrencyManager concurrencyManager) The concurrency managers about to acquire a cache key.ConcurrencyUtil.createToStringExplainingOwnedCacheKey
(ConcurrencyManager concurrencyManager) protected String
ConcurrencyUtil.currentThreadIsStuckForSomeTimeProduceTinyLogMessage
(long elapsedTime, ConcurrencyManager concurrencyManager, DeferredLockManager lockManager, ReadLockManager readLockManager) We have a thread that is not evolving for quite some while.protected DeadLockComponent
ExplainDeadLockUtil.deadLockFoundCreateConcurrencyManagerStateDeferredThreadCouldNotAcquireWriteLock
(DeadLockComponent nextThreadPartOfDeadLock, Thread threadNotAbleToAccessResource, ConcurrencyManager cacheKeyBlockingIsBuildObjectComplete) Create a deadlock component for a thread known to be stuck trying to release deferred locks.protected DeadLockComponent
ExplainDeadLockUtil.deadLockFoundCreateConcurrencyManagerStateReaderThreadCouldNotAcquireWriteLock
(DeadLockComponent nextThreadPartOfDeadLock, Thread threadNotAbleToAccessResource, ConcurrencyManager cacheKeyThreadWantsToAcquireButCannotGet) Dto component participating in a dead lock.protected DeadLockComponent
ExplainDeadLockUtil.deadLockFoundCreateConcurrencyManagerStateWriterThreadCouldNotAcquireWriteLock
(DeadLockComponent nextThreadPartOfDeadLock, Thread threadNotAbleToAccessResource, ConcurrencyManager cacheKeyThreadWantsToAcquireButCannotGet) Create a dead lock dto component.void
ConcurrencyUtil.determineIfReleaseDeferredLockAppearsToBeDeadLocked
(ConcurrencyManager concurrencyManager, long whileStartTimeMillis, DeferredLockManager lockManager, ReadLockManager readLockManager, boolean callerIsWillingToAllowInterruptedExceptionToBeFiredUpIfNecessary) Throw an interrupted exception if appears that eclipse link code is taking too long to release a deferred lock.static void
ConcurrencyManager.enrichStringBuildingExplainWhyThreadIsStuckInIsBuildObjectOnThreadComplete
(List<Thread> chainOfThreadsExpandedInRecursion, ConcurrencyManager finalDeferredLockCausingTrouble, Thread activeThreadOnDeferredLock, boolean hasDeferredLockManager, StringBuilder justification) When the recursive algorithm decides to return false it is because it is confronted with a cache key that had to be deferred.protected CacheKeyToThreadRelationships
ConcurrencyUtil.get
(ConcurrencyManager cacheKey, Map<ConcurrencyManager, CacheKeyToThreadRelationships> mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey) Helper method to make sure we never get null dto from the mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey.ConcurrencyUtil.readLockManagerProblem01CreateLogErrorMessageToIndicateThatCurrentThreadHasNullReadLockManagerWhileDecrementingNumberOfReaders
(int currentNumberOfReaders, int decrementedNumberOfReaders, ConcurrencyManager cacheKey) If when we are decrement the counter of number of readers on a cache key we find ourselves lacking the read lock manager at the time of the decrement we want to log a big fat error on the server log protecting that the current thread is misbehaving.ConcurrencyUtil.readLockManagerProblem02ReadLockManageHasNoEntriesForThread
(ConcurrencyManager cacheKey, long threadId) ConcurrencyUtil.readLockManagerProblem03ReadLockManageHasNoEntriesForThread
(ConcurrencyManager cacheKey, long threadId) protected DeadLockComponent
ExplainDeadLockUtil.recursiveExpansionCurrentThreadBeingBlockedByActiveThreadOnCacheKey
(ConcurrencyManagerState concurrencyManagerState, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyThreadWantsToAcquireButCannotGet, boolean currentThreadWantsToAcquireForWriting) Try to expand the current thread from the perspective that it wants a cache key that may be own for writing by a competitor thread.protected DeadLockComponent
ExplainDeadLockUtil.recursiveExpansionCurrentThreadBeingBlockedByActiveWriters
(ConcurrencyManagerState concurrencyManagerState, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyThreadWantsToAcquireButCannotGet, boolean currentThreadWantsToAcquireForWriting) Try to expand the current thread from the perspective that it wants a cache key that may be own for writing by a competitor thread.protected DeadLockComponent
ExplainDeadLockUtil.recursiveExplainPossibleDeadLockStep03ExpandBasedOnCacheKeyWantedForWriting
(ConcurrencyManagerState concurrencyManagerStateDto, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyCurrentThreadWantsForWritingButCannotGet) We are looking at thread that we know has registered itself as wanting to acquire a write lock and not managing to make progress getting the write lock.protected DeadLockComponent
ExplainDeadLockUtil.recursiveExplainPossibleDeadLockStep03Scenario01CurrentWriterVsOtherWritersWriter
(ConcurrencyManagerState concurrencyManagerStateDto, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyCurrentThreadWantsForWritingButCannotGet) Expand the possibility of the current thread wanting to acquire for writing what some other already has acquired for writing.protected DeadLockComponent
ExplainDeadLockUtil.recursiveExplainPossibleDeadLockStep03Scenario02CurrentWriterVsOtherReader
(ConcurrencyManagerState concurrencyManagerState, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyCurrentThreadWantsForWritingButCannotGet) Expand the recursion exploring the possibility that the reason the current thread cannot acquire the cache key is because there are readers on the cache key.protected DeadLockComponent
ExplainDeadLockUtil.recursiveExplainPossibleDeadLockStep03Scenario03CurrentWriterVsCacheKeyActiveThread
(ConcurrencyManagerState concurrencyManagerStateDto, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyCurrentThreadWantsForWritingButCannotGet) In scenario 3 is when we start considering the possbility our data for detecting the dead lock is not ok or the cache is corrupted.protected DeadLockComponent
ExplainDeadLockUtil.recursiveExplainPossibleDeadLockStep05ExpandBasedOnCacheKeyWantedForReading
(ConcurrencyManagerState concurrencyManagerStateDto, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyCurrentThreadWantsForReadingButCannotGet) In this case have a thread that wants to acquire for reading a cache key but it does not manage to acquire it because the cache key is being owned by somebody else.protected DeadLockComponent
ExplainDeadLockUtil.recursiveExplainPossibleDeadLockStep05Scenario01CurrentReaderVsOtherWriters
(ConcurrencyManagerState concurrencyManagerStateDto, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyCurrentThreadWantsForWritingButCannotGet) Expand the possibility of the current thread wanting to acquire for writing what some other already has acquired for writing.protected DeadLockComponent
ExplainDeadLockUtil.recursiveExplainPossibleDeadLockStep05Scenario02CurrentReaderVsCacheKeyActiveThread
(ConcurrencyManagerState concurrencyManagerStateDto, int recursionMaxDepth, int currentRecursionDepth, Thread currentCandidateThreadPartOfTheDeadLock, List<Thread> threadPartOfCurrentDeadLockExpansion, Set<Thread> threadsAlreadyExpandedInThePastThatWeDoNotWantToExpandAgain, ConcurrencyManager cacheKeyCurrentThreadWantsForWritingButCannotGet) Same asExplainDeadLockUtil.recursiveExplainPossibleDeadLockStep03Scenario03CurrentWriterVsCacheKeyActiveThread(ConcurrencyManagerState, int, int, Thread, List, Set, ConcurrencyManager)
but in this case our candidate thread is trying to get the cache key with the purpose of READING and not for writing.static void
WriteLockManager.removeCacheKeyFromMapWriteLockManagerToCacheKeysThatCouldNotBeAcquired
(Thread thread, ConcurrencyManager cacheKeyThatCouldNotBeAcquired) A cache keys was successfully acquired we want to make sure it is not recorded in the map of cache keys that could not be acquired.void
ReadLockManager.removeReadLock
(ConcurrencyManager concurrencyManager) During normal operation of the concurrency manager, each time a cache key is decrement in the number of readers, so must the corresponding read lock manager of the thread be told let go of the cache key object acquired for reading.Modifier and TypeMethodDescriptionstatic Map
<Thread, ConcurrencyManager> ConcurrencyUtil.cloneMapThreadToWaitOnAcquire
(Map<Thread, ConcurrencyManager> mapThreadToWaitOnAcquireOriginal) Clone the static map of the concurrency manager that tells us about threads waiting to acquire locks.static Map
<Thread, Set<ConcurrencyManager>> ConcurrencyUtil.cloneMapThreadToWaitOnAcquireInsideWriteLockManagerOriginal
(Map<Thread, Set<ConcurrencyManager>> mapThreadToWaitOnAcquireInsideWriteLockManagerOriginal) Clone the static map of the concurrency manager that tells us about threads waiting to acquire locks.protected String
ConcurrencyUtil.createInformationAboutAllResourcesAcquiredAndDeferredByThread
(ReadLockManager readLockManager, DeferredLockManager lockManager, Set<ConcurrencyManager> waitingOnAcquireCacheKeys, ConcurrencyManager waitingOnAcquireReadCacheKey, boolean threadWaitingToReleaseDeferredLocks, Thread thread, int currentThreadNumber, int totalNumberOfThreads, Set<Object> writeManagerThreadPrimaryKeysWithChangesToBeMerged, String waitingToReleaseDeferredLocksJustification) Build a string that tries to describe in as much detail as possible the resources associated to the current thread.protected String
ConcurrencyUtil.createInformationAboutAllThreadsWaitingToAcquireReadCacheKeys
(Map<Thread, ConcurrencyManager> mapThreadToWaitOnAcquireReadLockClone, Map<Thread, String> mapThreadToWaitOnAcquireReadLockMethodNameClone) In this page of log dumping information we want to give a summary to the user of threads that appear to be stuck doing an acquire of the cache key.void
ConcurrencyUtil.enrichMapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKeyInfoAboutActiveAndDeferredLocks
(Map<ConcurrencyManager, CacheKeyToThreadRelationships> mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey, Map<Thread, DeferredLockManager> deferredLockManagerMapClone) Enrich our map map of cache key to threads having a relationship with that object in regards to active locks on the cache key and deferred locks on the cache keyvoid
ConcurrencyUtil.enrichMapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKeyInfoAboutReadLocks
(Map<ConcurrencyManager, CacheKeyToThreadRelationships> mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey, Map<Thread, ReadLockManager> readLockManagerMapClone) Enrich the mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey based on the read locksvoid
ConcurrencyUtil.enrichMapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKeyInfoThreadsStuckOnAcquire
(Map<ConcurrencyManager, CacheKeyToThreadRelationships> mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey, Map<Thread, Set<ConcurrencyManager>> unifiedMapOfThreadsStuckTryingToAcquireWriteLock) Enrich the mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey by setting on the cache keys the threads that are stuck trying to acquire the cache key.void
ConcurrencyUtil.enrichMapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKeyInfoThreadsStuckOnAcquireLockForReading
(Map<ConcurrencyManager, CacheKeyToThreadRelationships> mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey, Map<Thread, ConcurrencyManager> mapThreadToWaitOnAcquireReadLockClone) Enrich the mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey by setting on the cache keys the threads that are stuck trying to acquire the cache key with a read lock.static void
ConcurrencyUtil.enrichMapThreadToWaitOnAcquireInsideWriteLockManagerClone
(Map<Thread, Set<ConcurrencyManager>> mapThreadToWaitOnAcquireInsideWriteLockManagerClone, Map<Thread, ConcurrencyManager> mapThreadToWaitOnAcquireClone) We have two maps we are using to trace threads that are stuck acquiring locks.protected CacheKeyToThreadRelationships
ConcurrencyUtil.get
(ConcurrencyManager cacheKey, Map<ConcurrencyManager, CacheKeyToThreadRelationships> mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey) Helper method to make sure we never get null dto from the mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey.void
DeferredLockManager.setActiveLocks
(Vector<ConcurrencyManager> activeLocks) set a set of the active locks to the DLMvoid
DeferredLockManager.setDeferredLocks
(Vector<ConcurrencyManager> deferredLocks) set a set of the deferred locks to the DLM -
Uses of ConcurrencyManager in org.eclipse.persistence.internal.helper.type
Modifier and TypeMethodDescriptionCacheKeyToThreadRelationships.getCacheKeyBeingDescribed()
Getter forCacheKeyToThreadRelationships.cacheKeyBeingDescribed
IsBuildObjectCompleteOutcome.getCacheKeyOwnedByBlockingThread()
Getter forIsBuildObjectCompleteOutcome.cacheKeyOwnedByBlockingThread
DeadLockComponent.getCacheKeyThreadWantsToAcquireButCannotGet()
Getter forDeadLockComponent.cacheKeyThreadWantsToAcquireButCannotGet
ReadLockAcquisitionMetadata.getCacheKeyWhoseNumberOfReadersThreadIsIncrementing()
Getter forReadLockAcquisitionMetadata.cacheKeyWhoseNumberOfReadersThreadIsIncrementing
Modifier and TypeMethodDescriptionConcurrencyManagerState.getMapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey()
Getter forConcurrencyManagerState.mapOfCacheKeyToDtosExplainingThreadExpectationsOnCacheKey
ConcurrencyManagerState.getMapThreadToWaitOnAcquireReadLockClone()
Getter forConcurrencyManagerState.mapThreadToWaitOnAcquireReadLockClone
ConcurrencyManagerState.getUnifiedMapOfThreadsStuckTryingToAcquireWriteLock()
Getter forConcurrencyManagerState.unifiedMapOfThreadsStuckTryingToAcquireWriteLock
Modifier and TypeMethodDescriptionvoid
DeadLockComponent.setCacheKeyThreadWantsToAcquireButCannotGet
(ConcurrencyManager cacheKeyThreadWantsToAcquireButCannotGet) Setter forDeadLockComponent.cacheKeyThreadWantsToAcquireButCannotGet
ModifierConstructorDescriptionCacheKeyToThreadRelationships
(ConcurrencyManager cacheKeyBeingDescribed) Create a new CacheKeyToThreadRelationships.DeadLockComponent
(Thread threadNotAbleToAccessResource, boolean stuckOnReleaseDeferredLock, boolean stuckThreadAcquiringLockForWriting, boolean stuckThreadAcquiringLockForReading, ConcurrencyManager cacheKeyThreadWantsToAcquireButCannotGet, boolean deadLockPotentiallyCausedByCacheKeyWithCorruptedActiveThread, boolean deadLockPotentiallyCausedByCacheKeyWithCorruptedNumberOfReaders, DeadLockComponent nextThreadPartOfDeadLock) Create a new DeadLockComponent.IsBuildObjectCompleteOutcome
(Thread threadBlockingTheDeferringThreadFromFinishing, ConcurrencyManager cacheKeyOwnedByBlockingThread) Create a new IsBuildObjectCompleteOutcome.ReadLockAcquisitionMetadata
(ConcurrencyManager cacheKeyWhoseNumberOfReadersThreadIsIncrementing, int numberOfReadersOnCacheKeyBeforeIncrementingByOne, String currentThreadStackTraceInformation, long currentThreadStackTraceInformationCpuTimeCostMs) Create a new ReadLockAcquisitionMetadata. -
Uses of ConcurrencyManager in org.eclipse.persistence.internal.identitymaps
Modifier and TypeClassDescriptionclass
Purpose: Container class for storing objects in an IdentityMap.class
Inner class to define the specialized weak cache key.class
Purpose: Provides the capability to insert CacheKeys into a Linked List.class
class
Purpose: Container class for storing objects in an IdentityMap.class
Purpose: Container class for storing objects in an IdentityMap.Modifier and TypeFieldDescriptionprotected ConcurrencyManager
IdentityMapManager.cacheMutex
Ensure mutual exclusion depending on the cache isolation.Modifier and TypeMethodDescriptionprotected void
IdentityMapManager.setCacheMutex
(ConcurrencyManager cacheMutex) Set the cache mutex. -
Uses of ConcurrencyManager in org.eclipse.persistence.internal.jpa
-
Uses of ConcurrencyManager in org.eclipse.persistence.internal.sessions
Modifier and TypeFieldDescriptionprotected ConcurrencyManager
AbstractSession.transactionMutex
Ensure mutual exclusion of the session's transaction state across multiple threads.Modifier and TypeMethodDescriptionAbstractSession.getTransactionMutex()
INTERNAL: The transaction mutex ensure mutual exclusion on transaction across multiple threads.Modifier and TypeMethodDescriptionprotected void
AbstractSession.setTransactionMutex
(ConcurrencyManager transactionMutex) -
Uses of ConcurrencyManager in org.eclipse.persistence.sessions.interceptors
Modifier and TypeClassDescriptionclass
The CacheKeyInterceptor allows a Cache Interceptor implementation to wrap the EclipseLink CacheKey.