OrientDB:IllegalStateException:挂钩执行时无法启动事务

问题描述 投票:0回答:1

当我尝试在DB中插入17000个顶点时,我收到此错误。顶点被分组为多个树,当树具有被遍历/存储的bean时,提交发生。第一棵树有2300个顶点,第二棵树有5500个顶点,当它失败时就在这一点上。

java.lang.IllegalStateException: Cannot begin a transaction while a hook is executing
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.begin(ODatabaseDocumentTx.java:2210)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.begin(ODatabaseDocumentTx.java:2192)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.ensureTransaction(OrientTransactionalGraph.java:229)
at com.tinkerpop.blueprints.impls.orient.OrientTransactionalGraph.commit(OrientTransactionalGraph.java:177)
at net.odbogm.SessionManager.commit(SessionManager.java:351)
at com.quiencotiza.utilities.SetupInicial.loadRubros(SetupInicial.java:180)
at com.quiencotiza.utilities.SetupInicial.initDatabase(SetupInicial.java:48)
at com.quiencotiza.utilities.SetupInicial.main(SetupInicial.java:41)

这是一个单线程应用程序。它使用首字母记录加载数据库。我升级到2.2.4但是我得到了同样的错误。

谢谢马塞洛


好。我解决了这个问题。它似乎与activateOnCurrentThread()有关,但不知道它为什么会发生。什么意味着例外?它为什么扔?

orientdb
1个回答
0
投票

我知道它是一个古老的主题,但也许它会帮助某人,有同样的问题,很多线程有很多查询和更新。所以我开始使用一个线程(Java中的SingleThreadExecutor)并解决它,我猜钩子锁中有一个bug

© www.soinside.com 2019 - 2024. All rights reserved.