赞
踩
bug如下:
java.sql.SQLException: Lock wait timeout exceeded | org.springframework.dao.CannotAcquireLockException
检查了代码,sql都没有问题;引起bug的原因是在一个service中调用了另一个service,两个都有自己的事务,所以嵌套形成死锁。(但是很奇怪,之前的代码一直运行没有问题,突然之间有这个死锁问题)
之前代码:
saveList(){
.....
// 处理车辆信息
if (pdlist.get(i).getString("var36") != null && !"".equals(pdlist.get(i).getString("var36"))) {
PageData data = vehiclesService.getVehiclesByNumber(pdlist.get(i));
if (data != null) {
PageData data2 = new PageData();
data2.put("did", pdlist.get(i).getString("id"));
data2.put("vid", data.getString("id"));
data2.put("createtime", DateUtil.getTime());
data2.put("id", UuidUtils.getUUID());
list.add(data2);
vehiclesService.editByIdstates1(data2);
}
}
}
改进之后:
saveList(){
.....
// 处理车辆信息
if (pdlist.get(i).getString("var34") != null && !"".equals(pdlist.get(i).getString("var34"))) {
PageData data = (PageData) dao.findForObject("VehiclesMapper.getVehiclesByNumber", pdlist.get(i));
if (data != null) {
PageData data2 = new PageData();
data2.put("did", pdlist.get(i).getString("id"));
data2.put("vid", data.getString("id"));
data2.put("createtime", DateUtil.getTime());//创建时间
data2.put("id", UuidUtils.getUUID());
list.add(data2);
// 绑定时间
data2.put("bind_time", DateUtil.getTime());
// 根据车辆id将车辆状态改为已分配
dao.update("VehiclesMapper.editByIdstate1", data2);
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。