Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 负载下的松动类型?_Neo4j_Spring Data Neo4j - Fatal编程技术网

Neo4j 负载下的松动类型?

Neo4j 负载下的松动类型?,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,Neo4j 1.9.2,SDN 2.3.0.M1,SpringFramework 3.2.3.RELEASE 我有一个针对我的应用程序运行的压力测试,该应用程序由两个使用异步处理来交换消息的微服务组成。源服务是Neo4J 总流程 存储~>消息->处理~>消息~>检索 在存储期间,我在单个事务中持久化startnode、endnode和基于属性的关系。一切都好。消息切换是异步的 我正在用非线程JUnit测试中发出的约1000个请求测试上述流 在检索步骤中,可能会出现一次或两次,有时甚至从未出现过,

Neo4j 1.9.2,SDN 2.3.0.M1,SpringFramework 3.2.3.RELEASE

我有一个针对我的应用程序运行的压力测试,该应用程序由两个使用异步处理来交换消息的微服务组成。源服务是Neo4J

总流程 存储~>消息->处理~>消息~>检索

在存储期间,我在单个事务中持久化startnode、endnode和基于属性的关系。一切都好。消息切换是异步的

我正在用非线程JUnit测试中发出的约1000个请求测试上述流

在检索步骤中,可能会出现一次或两次,有时甚至从未出现过,我会得到以下stacktrace:

Caused by: org.neo4j.graphdb.NotFoundException: '__type__' property not found for RelationshipImpl #3027 of type 9 between Node[1009] and Node[1516].
at org.neo4j.kernel.impl.core.Primitive.newPropertyNotFoundException(Primitive.java:193)
at org.neo4j.kernel.impl.core.Primitive.getProperty(Primitive.java:188)
at org.neo4j.kernel.impl.core.RelationshipImpl.getProperty(RelationshipImpl.java:29)
at org.neo4j.kernel.impl.core.RelationshipProxy.getProperty(RelationshipProxy.java:114)
at org.springframework.data.neo4j.support.typerepresentation.AbstractIndexingTypeRepresentationStrategy.readAliasFrom(AbstractIndexingTypeRepresentationStrategy.java:107)
at org.springframework.data.neo4j.support.mapping.TRSTypeAliasAccessor.readAliasFrom(TRSTypeAliasAccessor.java:36)
at org.springframework.data.neo4j.support.mapping.TRSTypeAliasAccessor.readAliasFrom(TRSTypeAliasAccessor.java:26)
at org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:101)
at org.springframework.data.convert.DefaultTypeMapper.getDefaultedTypeToBeUsed(DefaultTypeMapper.java:164)
at org.springframework.data.convert.DefaultTypeMapper.readType(DefaultTypeMapper.java:141)
at org.springframework.data.neo4j.support.mapping.Neo4jEntityConverterImpl.read(Neo4jEntityConverterImpl.java:76)
at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister$CachedConverter.read(Neo4jEntityPersister.java:170)
at org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister.createEntityFromState(Neo4jEntityPersister.java:192)
at org.springframework.data.neo4j.support.Neo4jTemplate.findOne(Neo4jTemplate.java:155)
at com.auditbucket.engine.repo.neo4j.dao.AuditDaoNeo.getChange(AuditDaoNeo.java:239)
at com.auditbucket.engine.service.AuditService.handleSearchResult(AuditService.java:411)
at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
我很确定这与SDN/Neo4J LIB有关。在创建关系并通过消息Q发送Id时,该关系不可能不存在。很难看出事务是如何未提交的。代码块包括完整性无论如何

    ....
    AuditChange change = auditDAO.save(fUser, input, txRef);
    AuditLog log = auditDAO.addLog(header, change, fortressWhen);
    input.setStatus(AuditLogInputBean.LogStatus.OK);

    if (searchActive) {
        // Used to reconcile that the change was actually indexed
        sd.setLogId(log.getId());
        searchGateway.makeChangeSearchable(sd);
    }
    return input;

您使用的是Neo4j嵌入式还是服务器!一定是把那个重要的小事实编辑出来了。你能用junit测试把它提取到一个独立的项目中吗?希望能够追踪并修复它。如果是这样的话,给neo4j dot Org的michael发送一封电子邮件,这看起来是一个比赛条件。从日志中,Spring容器确认事务已在主线程中提交。事务性方法所做的最后一件事是移交给异步任务。异步线程随后尝试在一段时间后读取关系,并引发异常。要求异步方法执行Thread.sleep(50)问题消失了,但这是一个令人讨厌的黑客行为。类似地,我可以在我的服务前面放置一个facade,以便在确定事务已提交后独立调用异步方法,但这也是一种攻击。