fix(worker): 记住轮询间隔内的容量需求

异步视频任务在 River 轮询空档会释放本地 lease,采样瞬间可能观察不到已经触顶的领取需求,导致自适应容量长期停在初始值。本提交记录采样窗口内出现过的容量饱和,同时保持空闲 Worker 不盲目升容。\n\n移植时保留主线现有的单节点容量阶梯、请求下限和严格失败门禁,仅合入失败路径先记录并排空任务与回调、再删除模拟器资源的清理顺序,并补充脚本守卫。\n\n验证:go test ./... -count=1;go vet ./...;bash -n;ShellCheck;production-acceptance-script-test.sh。
This commit is contained in:
2026-08-05 00:53:06 +08:00
parent ebdb96e7d7
commit 9ce9053d7b
4 changed files with 85 additions and 15 deletions
@@ -247,6 +247,25 @@ for invalid_capacity_state in \
fi
done
# shellcheck disable=SC2016 # Match the literal arithmetic expression in the target script.
grep -Fq 'requests=$((slots * 6))' "$script"
if grep -Fq '(( requests < 64 ))' "$script"; then
echo 'single-node video ladder still overdrives low-capacity steps with a fixed request floor' >&2
exit 1
fi
awk '
/^cleanup\(\)/ { capture = 1 }
capture { print }
capture && /^}/ { exit }
' "$script" >"$tmp/cleanup-function.sh"
mark_failed_line=$(grep -n 'mark_run_failed' "$tmp/cleanup-function.sh" | cut -d: -f1)
cleanup_resources_line=$(grep -n 'cleanup_single_node_kubernetes_resources' "$tmp/cleanup-function.sh" | cut -d: -f1)
[[ -n $mark_failed_line && -n $cleanup_resources_line && $mark_failed_line -lt $cleanup_resources_line ]] || {
echo 'single-node cleanup removes the callback collector before failed outbox work drains' >&2
exit 1
}
passing_pressure_row='2026-08-01T00:00:00Z,0,0,899,149,200,84,1535,0,32,32,0,0,0,0,2,48,0,8,8,0,0,0,16,16,0,0,1535,100'
pressure_row_passes_live_gates "$passing_pressure_row"
[[ $(pressure_row_live_gate_reason '2026-08-01T00:00:00Z,0,0,900,149,200,79,1535,0,32,32,0,0,0,0,2,48,0,8,8,0,0,0,16,16,0,0,1535,100') == \