fix(worker): 拆分准入事务并收敛验收失败状态
将批量准入改为每任务独立事务,避免 P24 压测时 48 条任务共享长事务造成 transactionid 锁潮与 Worker 槽位空转。失败验收在保持 validation 的同时清理未提交任务,并记录精确压力门禁原因。统一生产 0+2 Worker 拓扑、运行时 ConfigMap 与发布配置,补充镜像预检诊断和回归测试。\n\n验证:Go 全量测试、go vet、真实 PostgreSQL 48 任务集成测试、迁移安全检查、发布脚本测试、bash -n、ShellCheck、Compose 配置均通过。
This commit is contained in:
@@ -598,7 +598,7 @@ SELECT
|
||||
rollbackInputs = append(rollbackInputs, input)
|
||||
}
|
||||
batchHookFailure := errors.New("synthetic batch hook failure")
|
||||
_, err = first.TryTaskAdmissionBatchWithAdmittedHook(
|
||||
partialOutcomes, err := first.TryTaskAdmissionBatchWithAdmittedHook(
|
||||
ctx,
|
||||
rollbackInputs,
|
||||
func(tx pgx.Tx, input TaskAdmissionInput) error {
|
||||
@@ -615,6 +615,10 @@ WHERE id = $1::uuid`, input.TaskID)
|
||||
if !errors.Is(err, batchHookFailure) {
|
||||
t.Fatalf("batch hook failure=%v, want synthetic failure", err)
|
||||
}
|
||||
if len(partialOutcomes) != 2 || !partialOutcomes[0].Result.Admitted ||
|
||||
!errors.Is(partialOutcomes[1].Err, batchHookFailure) {
|
||||
t.Fatalf("per-task batch outcomes=%+v, want first committed and second failed", partialOutcomes)
|
||||
}
|
||||
var rollbackWaiting, rollbackLeases, rollbackRiverJobs int
|
||||
if err := first.pool.QueryRow(ctx, `
|
||||
SELECT
|
||||
@@ -631,9 +635,9 @@ SELECT
|
||||
).Scan(&rollbackWaiting, &rollbackLeases, &rollbackRiverJobs); err != nil {
|
||||
t.Fatalf("read rolled back batch admission: %v", err)
|
||||
}
|
||||
if rollbackWaiting != 2 || rollbackLeases != 0 || rollbackRiverJobs != 0 {
|
||||
if rollbackWaiting != 1 || rollbackLeases != 1 || rollbackRiverJobs != 1 {
|
||||
t.Fatalf(
|
||||
"rolled back batch waiting=%d leases=%d River jobs=%d, want 2/0/0",
|
||||
"per-task rollback waiting=%d leases=%d River jobs=%d, want 1/1/1",
|
||||
rollbackWaiting,
|
||||
rollbackLeases,
|
||||
rollbackRiverJobs,
|
||||
|
||||
Reference in New Issue
Block a user