请求异步问题(20220627)
问题表象
每次切换任务巡查时,有5%左右概率崩溃
根本原因
正确时网络请求顺序:
- 前端请求/api/affair/inspection/mGetInspectionTask
- 前端请求/api/affair/inspection/updateInspectionTask
- /api/affair/inspection/updateInspectionTask修改数据库status=2
- /api/affair/inspection/mGetInspectionTask到达数据库拿到status=2
- /api/affair/inspection/updateInspectionTask返回前端结果,选中该任务巡查
- /api/affair/inspection/mGetInspectionTask返回status=2的结果给前端,状态正确
崩溃请求顺序:
- 前端请求/api/affair/inspection/mGetInspectionTask
- 前端请求/api/affair/inspection/updateInspectionTask
- /api/affair/inspection/mGetInspectionTask到达数据库拿到status=1
- /api/affair/inspection/updateInspectionTask修改数据库status=2
- /api/affair/inspection/updateInspectionTask返回前端结果,选中该任务巡查
- /api/affair/inspection/mGetInspectionTask返回status=1的结果给前端,导致不可巡查
解决方案
mGetInspectionTask巡查任务时,如果访问数据库的时间戳小于修改数据库的时间戳,那么舍弃该状态