Java OrientDb事务错误

Java OrientDb事务错误,java,transactions,orientdb,Java,Transactions,Orientdb,我正在评估几个NoSQL数据库,包括OrientDB。我是OrientDB新手,试图编写一个强调OrientDB事务的多线程测试 以下是代码(imho太长,无法包含在此): 这是一个简单的独立测试,使用多个并行线程读取实体,增加number字段的值,并保存实体,所有这些都在事务中 它在一个实体上产生了很多争用,这就是关键所在。它可以正常工作,大部分时间检测争用,并正确回滚事务 我正在本地安装的OrientDB 2.0-rc2上测试这一点,客户端通过远程协议连接到它 你知道为什么有时候会检测到事务

我正在评估几个NoSQL数据库,包括OrientDB。我是OrientDB新手,试图编写一个强调OrientDB事务的多线程测试

以下是代码(imho太长,无法包含在此):

这是一个简单的独立测试,使用多个并行线程读取实体,增加
number
字段的值,并保存实体,所有这些都在事务中

它在一个实体上产生了很多争用,这就是关键所在。它可以正常工作,大部分时间检测争用,并正确回滚事务

我正在本地安装的OrientDB 2.0-rc2上测试这一点,客户端通过
远程
协议连接到它


你知道为什么有时候会检测到事务冲突,而有时候会通过吗?

在你的例子中,我建议使用连接池。ThinkerPop API包括文档和图形连接的工厂实现。每次创建一个新线程时,您可能都应该获取连接池的一个实例

对于您拥有的文档

ODatabaseDocumentPool pool = new ODatabaseDocumentPool("plocal:/temp/mydb");
OrientGraph g = new OrientGraph(pool.acquire());
对于图形数据库,它甚至更简单

OrientGraphFactory factory = new OrientGraphFactory("plocal:/temp/mydb").setupPool(1, 10);
OrientGraph txGraph = factory.getTx();
我将尝试使用与数据库的池连接来查看此错误是否仍然存在,并记住在使用完数据库实例后关闭它


查看此链接

您的答案在这里,但不幸的是,答案不在这里。代码使用文档中描述的事务。问题是它有时有效,有时无效。