Gab*_*ido 6 exception mongodb mongodb-query spring-boot
我正在开发一个连接到 mongo db 数据库的 Spring Boot 应用程序。
我不知道为什么,但有时会出现以下错误:
org.springframework.data.mongodb.MongoTransactionException:查询失败,错误代码 251 和错误消息“给定的事务号 1 与任何正在进行的事务不匹配。” 服务器 <> 上的活动交易编号为 -1';嵌套异常是 com.mongodb.MongoQueryException:查询失败,错误代码 251 和错误消息“给定事务号 1 与任何正在进行的事务不匹配。” 服务器 <> 上的活动交易编号为 -1'。
我尝试阅读更多有关此问题的信息,但找不到太多信息。我发现有时这是由于事务管理器的超时问题造成的,但我只是在收到请求时收到错误。正如您在以下日志中看到的
我在 2021-06-29 13:41:14,054 发送请求,并在 2021-06-29 13:41:14,061 收到错误,仅 10 毫秒后。
我有以下配置:
@Configuration
public class SpringMongoconfig {
@Autowired private MongoDatabaseFactory mongoDbFactory;
@Autowired private MongoMappingContext mongoMappingContext;
public @Bean MongoTemplate mongoTemplate() {
// remove _class
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);
MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
return new MongoTemplate(mongoDbFactory, converter);
}
@Bean
MongoTransactionManager txManager(MongoDatabaseFactory dbFactory) {
return new MongoTransactionManager(dbFactory);
}
}
Run Code Online (Sandbox Code Playgroud)
它只是有时发生,因为如果我发起相同的请求,它会很好地工作
我的 ddbb 处于副本模式。
有人能帮我吗?
提前致谢。
小智 0
确保事务中对 Mongodb 的第一个请求不会与该事务中的任何其他请求并行完成。我们在一个项目中也遇到了类似的错误。在花了很多时间之后,我们得出了这个假设。对于 Spring Mongo 事务,实际事务在第一个请求发送到数据库时启动。哪种请求 - 查找、查询、更新、保存等并不重要。因此,当第一个请求与任何其他请求并行发送,但无法在它们之前完成时,它们认为事务已经完成开始(但还没有),然后我们看到这个错误发生。“交易x+1不存在。最后一笔交易是x”。
为了修复此错误,我们对流程进行了更改,以便当向 MongoDB 发出第一个请求时,不会有并行的数据库调用。
| 归档时间: |
|
| 查看次数: |
1716 次 |
| 最近记录: |