合并 origin/master
合入 master 的钱包退款 outbox、拼图后台编译互斥与公开链路更新 保留当前分支外部生成 worker 队列语义,并对齐拼图首图 claim 释放顺序
This commit is contained in:
@@ -157,6 +157,10 @@ pub(crate) struct PuzzleCompileDraftWorkerPayload {
|
||||
#[serde(default)]
|
||||
pub image_model: Option<String>,
|
||||
pub requested_at_micros: i64,
|
||||
#[serde(default)]
|
||||
pub background_task_id: Option<String>,
|
||||
#[serde(default)]
|
||||
pub background_claim_id: Option<String>,
|
||||
}
|
||||
|
||||
pub(crate) async fn execute_puzzle_compile_draft_worker_job(
|
||||
@@ -228,6 +232,11 @@ pub(crate) async fn execute_puzzle_compile_draft_worker_job(
|
||||
)
|
||||
.await;
|
||||
}
|
||||
release_inline_puzzle_compile_background_claim(
|
||||
state,
|
||||
&payload,
|
||||
&external_generation_guard,
|
||||
);
|
||||
Ok(session)
|
||||
}
|
||||
Err(error) => {
|
||||
@@ -255,6 +264,11 @@ pub(crate) async fn execute_puzzle_compile_draft_worker_job(
|
||||
},
|
||||
)
|
||||
.await;
|
||||
release_inline_puzzle_compile_background_claim(
|
||||
state,
|
||||
&payload,
|
||||
&external_generation_guard,
|
||||
);
|
||||
Err(PuzzleExternalGenerationWorkerError::with_failure_state_written(error))
|
||||
}
|
||||
Err(mark_error) => {
|
||||
@@ -265,6 +279,37 @@ pub(crate) async fn execute_puzzle_compile_draft_worker_job(
|
||||
}
|
||||
}
|
||||
|
||||
fn release_inline_puzzle_compile_background_claim(
|
||||
state: &PuzzleApiState,
|
||||
payload: &PuzzleCompileDraftWorkerPayload,
|
||||
external_generation_guard: &ExternalGenerationWriteLeaseGuard,
|
||||
) {
|
||||
if external_generation_guard.job_id.is_some() {
|
||||
return;
|
||||
}
|
||||
release_puzzle_compile_background_claim(state, payload);
|
||||
}
|
||||
|
||||
pub(crate) fn release_puzzle_compile_background_claim(
|
||||
state: &PuzzleApiState,
|
||||
payload: &PuzzleCompileDraftWorkerPayload,
|
||||
) {
|
||||
let (Some(task_id), Some(claim_id)) = (
|
||||
payload.background_task_id.as_ref(),
|
||||
payload.background_claim_id.as_ref(),
|
||||
) else {
|
||||
return;
|
||||
};
|
||||
|
||||
spawn_release_claimed_puzzle_background_compile_task(
|
||||
state.clone(),
|
||||
task_id.clone(),
|
||||
claim_id.clone(),
|
||||
payload.session_id.clone(),
|
||||
payload.owner_user_id.clone(),
|
||||
);
|
||||
}
|
||||
|
||||
pub(crate) async fn mark_puzzle_compile_failure_for_worker(
|
||||
state: &PuzzleApiState,
|
||||
session_id: &str,
|
||||
|
||||
Reference in New Issue
Block a user