最近同事发现一个业务状态部分更新的bug,这个bug会导致两张表的数据一致性问题。花了些时间去查问题的原因,现在总结下里面遇到的知识点原理。
问题一:事务没生效
我们先看一段实例代码,来说明下问题:
@Service
public class PaymentServiceImpl implements PaymentService {
public void fetchLatestStatus(String trxId) {
//1. do RPC request and get the payment status
StatusResponse response = doRPC(trxId);
//2. save request data
saveRequest(response);
}
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public void updatePayment