fix: revalidate review context and serialize index retry
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user