我使用Neo4J BatchInserter从头开始构建一个大型数据库。我使用多个线程从BatchInserter读取数据并同步写入。
问题:在尝试读取属性
时迟早会遇到异常禁用断言我在PropertyRecord.next中得到一个ArrayIndexOutOfBounds
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:4 在org.neo4j.kernel.impl.store.record.PropertyRecord.next(PropertyRecord.java:190) 在org.neo4j.kernel.impl.store.record.PropertyRecord.next(PropertyRecord.java:41) 在org.neo4j.kernel.impl.transaction.state.Loaders $ 2.ensureHeavy(Loaders.java:189) 在org.neo4j.kernel.impl.transaction.state.Loaders $ 2.ensureHeavy(Loaders.java:161) at org.neo4j.unsafe.batchinsert.DirectRecordAccess $ DirectRecordProxy.forReadingData(DirectRecordAccess.java:174) at org.neo4j.unsafe.batchinsert.DirectRecordAccess $ DirectRecordProxy.forReadingData(DirectRecordAccess.java:115) 在org.neo4j.kernel.impl.transaction.state.PropertyTraverser.getPropertyChain(PropertyTraverser.java:65) at org.neo4j.unsafe.batchinsert.internal.BatchInserterImpl.getPropertyChain(BatchInserterImpl.java:1000) 在org.neo4j.unsafe.batchinsert.internal.BatchInserterImpl.getNodeProperties(BatchInserterImpl.java:900)
JavaDoc声明:“一次只有一个线程可以对批量插入器起作用,执行并发访问的多个线程必须采用同步。”
问题(S):
感谢您的反馈!
吕迪格尔
答案 0 :(得分:0)
我测试了什么:
出了什么:
当线程从同一节点读取时,抛出以下异常
线程“Thread-2”中的异常java.util.NoSuchElementException 在org.neo4j.kernel.impl.store.record.PropertyRecord.next(PropertyRecord.java:187) 在org.neo4j.kernel.impl.store.record.PropertyRecord.next(PropertyRecord.java:41) 在org.neo4j.kernel.impl.transaction.state.PropertyTraverser.getPropertyChain(PropertyTraverser.java:66) at org.neo4j.unsafe.batchinsert.internal.BatchInserterImpl.getPropertyChain(BatchInserterImpl.java:1000) at org.neo4j.unsafe.batchinsert.internal.BatchInserterImpl.getNodeProperties(BatchInserterImpl.java:900) 在org.hucompute.wikidragon.core.test.BatchInserterTest $ ReadThread.run(BatchInserterTest.java:56)
祝福,
吕迪格尔