场景:
@Bean
MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) {
return new MongoTransactionManager(dbFactory);
}
@Transactional
public void save(Cart cart,Item item) {
Cart cartFromDB = cartRepo.findById(cart.getId());
if(cartFromDB!= null){
cart.setId(cartFromDB.getId());
cartRepo.save(cart);
}else{
cartRepo.save(cart);
}
itemRepo.save(item);
}
@Transactional
在同一事务中保存两个不同的文档。错误信息:
com.mongodb.MongoCommandException: Command failed with error 13388 (StaleConfig): 'Transaction sd-ef6d-dsd-83bd-fsdfdf - dfdfdfdfdsdfdsfsd= - - :1 was aborted on statement 2 due to: an error from cluster data placement change :: caused by :: Encountered error from mongodb.cluster.local:26009 during a transaction :: caused by :: sharding status of collection mongodb.item is not currently known and needs to be recovered' on server mongos.xxxx.com:27017. The full response is {"ok": 0.0, "errmsg": "Transaction c43f42bd-ef6d-4c48-83bd-fgdfgsdfsgf - fgggeddddsksduydhdhsh= - - :1 was aborted on statement 2 due to: an error from cluster data placement change :: caused by :: Encountered error from mongodb.cluster.local:26009 during a transaction ::..... "errorLabels": ["TransientTransactionError"]}
问题: