fix: revalidate review context and serialize index retry

This commit is contained in:
2026-09-26 19:50:57 +08:00
parent b800481902
commit fe851c5f91
4 changed files with 35 additions and 3 deletions
+5 -1
View File
@@ -137,8 +137,11 @@ def enqueue_index_task(db, task_id: int):
def retry_index_task(db, source_id: int):
source = found(db, IndexTask, source_id)
source = db.scalar(select(IndexTask).where(IndexTask.id == source_id).with_for_update())
if not source:
raise HTTPException(404, "索引任务不存在")
if source.status != "failed":
db.rollback()
raise HTTPException(409, "仅失败的索引任务可重试")
existing = db.scalar(select(IndexTask).where(IndexTask.id > source.id,
IndexTask.course_version_id == source.course_version_id,
@@ -146,6 +149,7 @@ def retry_index_task(db, source_id: int):
IndexTask.kind == source.kind, IndexTask.status.in_(["queued", "running", "completed"]))
.order_by(IndexTask.id.desc()))
if existing:
db.commit()
return existing
retry = IndexTask(course_version_id=source.course_version_id, submission_file_id=source.submission_file_id,
kind=source.kind, status="queued")