修复结训:锁定参训记录避免结训并发竞态
This commit is contained in:
1 parent
a7fe99f94d
commit
612f24d5f1
1 file changed
+4
+4
@@ -41,6 +41,10 @@ public class EnrollmentPlanCompletionAdapter implements PlanEnrollmentCompletion
|
||||
@Override
|
||||
public void precheckCompletion(String planId)
|
||||
{
|
||||
// 按 enrollment_id 稳定升序锁定该计划下全部学员记录 (SELECT ... ORDER BY enrollment_id FOR UPDATE),
|
||||
// 阻止结训与学员报到/状态修改之间的并发竞态与 TOCTOU 窗口
|
||||
trainEnrollmentService.selectEnrollmentsForUpdateByPlanId(planId);
|
||||
|
||||
List<java.util.Map<String, Object>> stats = trainEnrollmentService.selectEnrollmentCompletionStatsByPlanId(planId);
|
||||
int status0Waiting = 0;
|
||||
int status1Reported = 0;
|
||||
|
||||
Reference in new issue
Block a user