-
Bug
-
Resolution: Done
-
Blocker
-
5.3.0.Final
When user transactions are used with a repository and some transactions are rolled back, if the rollback operation is performed from another thread (which is the case with Arjuna for example), then any locks that might have been obtained by previously successful session.save operations are never released.
The reason is that internally ModeShape uses ReentrantLock to track locked node keys, so when a transaction is started and some session.save operations are performed on thread T1, node keys are locked for this thread. If a subsequent rollback happens from a separate thread - T2 - these node keys will not be released because T2 is not the owning thread.