JanusGraphException:由于持久化过程中出现异常,无法提交事务 原因:PermanentLockingException:本地锁争用

pal*_*lla 6 cassandra tinkerpop tinkerpop3 janusgraph

我有这样的高级代码。

MethodXyz() {

updateVertex(A, props1)
commit
// some other code

updateVertex(A, props2)
commit

// do something else - long running
}
Run Code Online (Sandbox Code Playgroud)

对于不同的顶点,从 10+ 个不同的线程调用此方法,特别是通过用 10+ 个线程初始化的 Java 线程 ExecutorSerevice

在上述方法的第二次提交中,我总是从 10+ 个线程中随机地从 4-5 个线程中得到如下异常。

我不对顶点属性使用任何唯一性约束

我确实已将顶点属性“名称”定义为唯一的字符串数据类型(应用程序代码在 Janusgraph 中创建属性键时无需使用任何唯一约束即可保证这种唯一性)

但是我使用这个属性键“name”构建索引

使用默认模式 make - 未定义显式模式

我试图找出为什么即使不同的线程更新完全不同的顶点(互斥)也会抛出永久锁异常,以及为什么当没有定义为唯一使用任何 janusgrpah 锁的属性键时会发生锁定异常。

org.janusgraph.core.JanusGraphException: Could not commit transaction due to exception during persistence**
    at org.janusgraph.graphdb.transaction.StandardJanusGraphTx.commit(StandardJanusGraphTx.java:1385)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at org.janusgraph.graphdb.tinkerpop.JanusGraphBlueprintsGraph$GraphTransaction.doCommit(JanusGraphBlueprintsGraph.java:272)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at org.apache.tinkerpop.gremlin.structure.util.AbstractTransaction.commit(AbstractTransaction.java:104)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at com.fujitsu.fnc.mlpce.tetopology.impl.GraphDBService.commit(GraphDBService.java:509)[119:com.fujitsu.fnc.mlpce.tetopology.impl:5.2.0.SNAPSHOT]


Caused by: org.janusgraph.core.JanusGraphException: Unexpected exception
    at org.janusgraph.graphdb.database.StandardJanusGraph.commit(StandardJanusGraph.java:806)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at org.janusgraph.graphdb.transaction.StandardJanusGraphTx.commit(StandardJanusGraphTx.java:1374)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    ... 17 more
Caused by: org.janusgraph.diskstorage.locking.PermanentLockingException: Local lock contention**
    at org.janusgraph.diskstorage.locking.AbstractLocker.writeLock(AbstractLocker.java:327)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at org.janusgraph.diskstorage.locking.consistentkey.ExpectedValueCheckingStore.acquireLock(ExpectedValueCheckingStore.java:103)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at org.janusgraph.diskstorage.keycolumnvalue.KCVSProxy.acquireLock(KCVSProxy.java:52)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at org.janusgraph.diskstorage.BackendTransaction.acquireIndexLock(BackendTransaction.java:256)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at org.janusgraph.graphdb.database.StandardJanusGraph.prepareCommit(StandardJanusGraph.java:572)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    at org.janusgraph.graphdb.database.StandardJanusGraph.commit(StandardJanusGraph.java:702)[488:org.janusgraph.janusgraph-core:5.2.0.SNAPSHOT]
    ... 18 more
Run Code Online (Sandbox Code Playgroud)

jansugraph 0.2.0 与 cassandra 后端