[
https://issues.apache.org/jira/browse/JENA-1873?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17069059#comment-17069059
]
Andy Seaborne commented on JENA-1873:
-------------------------------------
This is a TopBraid error. Contact TopQuadrant support.
It is the applications responsibility to use {{StoreConnection.expel}}
carefully. Overlapping cases are not guaranteed. As the javadoc on
{{TDBInternal.releaseDSG}} says "Use with great care."
{{TDBInternal.releaseDSG}} should not be needed in normal operation. Deleting
and forcing out of the JVM (which does not work on MS Windows anyway - long
time java bug).
> Deadlock issue
> --------------
>
> Key: JENA-1873
> URL: https://issues.apache.org/jira/browse/JENA-1873
> Project: Apache Jena
> Issue Type: Bug
> Components: Jena, TDB
> Affects Versions: Jena 3.14.0
> Reporter: Fabian Polkosnik
> Priority: Major
>
> It is possible to face a deadlock issue when 3 threads are running in
> parallel. It is possible to face a deadlock issue when 3 threads are running
> in parallel.
> One of the threads is creating a new TDB dataset. The other two are deleting
> existing ones. It's resulting in the 3 thread cycle deadlock.
> Here are the stacktraces of 3 threads that are causing the problem.
> {code:java}
> "qtp1726434078-492":
> at org.apache.jena.tdb.sys.TDBInternal.releaseDSG(TDBInternal.java:194) -
> waiting to lock <0x000000069a6524a0> (a java.lang.Class for
> org.apache.jena.tdb.sys.TDBInternal)
> at org.apache.jena.tdb.StoreConnection.expel(StoreConnection.java:214) -
> locked <0x000000069a4568c0> (a java.lang.Class for
> org.apache.jena.tdb.StoreConnection)
> at org.apache.jena.tdb.StoreConnection.release(StoreConnection.java:202) -
> locked <0x000000069a4568c0> (a java.lang.Class for
> org.apache.jena.tdb.StoreConnection)
> at org.topbraid.tdb.TDBGraphs.removeSingleTDB(TDBGraphs.java:167) at
> org.topbraid.tdb.TDBGraphs.lambda$5(TDBGraphs.java:152) at
> org.topbraid.tdb.TDBGraphs$$Lambda$677/0x00000008010e2840.run(Unknown Source)
> at org.topbraid.tdb.TDBGraphs.destroy(TDBGraphs.java:92){code}
> {code:java}
> "qtp1726434078-151":
> at org.apache.jena.tdb.StoreConnection.make(StoreConnection.java:240) -
> waiting to lock <0x000000069a4568c0> (a java.lang.Class for
> org.apache.jena.tdb.StoreConnection)
> at org.apache.jena.tdb.StoreConnection.make(StoreConnection.java:258) at
> org.apache.jena.tdb.transaction.DatasetGraphTransaction.<init>(DatasetGraphTransaction.java:69)
>
> at org.apache.jena.tdb.sys.TDBMaker.createDirect(TDBMaker.java:126) at
> org.apache.jena.tdb.sys.TDBMaker$$Lambda$682/0x0000000801117840.apply(Unknown
> Source)
> at
> java.util.concurrent.ConcurrentHashMap.computeIfAbsent([email protected]/ConcurrentHashMap.java:1737)
> - locked <0x00000006a5cdc880> (a
> java.util.concurrent.ConcurrentHashMap$Node)
> at org.apache.jena.tdb.sys.TDBMaker._create(TDBMaker.java:112) at
> org.apache.jena.tdb.sys.TDBMaker.createDatasetGraphTransaction(TDBMaker.java:43){code}
> {code:java}
> "qtp1726434078-95":
> at
> java.util.concurrent.ConcurrentHashMap.replaceNode([email protected]/ConcurrentHashMap.java:1122)
> - waiting to lock <0x00000006a5cdc880> (a
> java.util.concurrent.ConcurrentHashMap$Node)
> at
> java.util.concurrent.ConcurrentHashMap.remove([email protected]/ConcurrentHashMap.java:1102)
> at org.apache.jena.tdb.sys.TDBMaker.uncache(TDBMaker.java:88)
> at org.apache.jena.tdb.sys.TDBInternal.releaseDSG(TDBInternal.java:194) -
> locked <0x000000069a6524a0> (a java.lang.Class for
> org.apache.jena.tdb.sys.TDBInternal)
> at org.topbraid.tdb.TDBGraphs.removeSingleTDB(TDBGraphs.java:166) at
> org.topbraid.tdb.TDBGraphs.lambda$5(TDBGraphs.java:152) at
> org.topbraid.tdb.TDBGraphs$$Lambda$677/0x00000008010e2840.run(Unknown Source)
> at org.topbraid.tdb.TDBGraphs.destroy(TDBGraphs.java:92){code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)