- 起因: 项目Bot 复验 t2 时 caseD(挂死桩/上限10s) exit=1 elapsed=50s - 根因: 目标接受TCP但不响应 -> 单次探测耗满 --max-time 2s, 次数上限(x2) 使 10s 上限实跑 50s, 默认 30s 最坏 150s - 修正: while 条件改墙钟 [ $(date +%s) - READY_T0 -lt SMOKE_READY_MAX ], deploy.sh 与 .woodpecker/main.yml 同步 - 复验: A(慢起6s,cap30)=exit0/6s; B(空端口,cap3)=exit1/3s; C(200+degraded,cap3)=exit1/3s; D(挂死,cap10)=exit1/10s(修正前50s) - task: t2-cma-deploy-readiness-poll-20260915 (follow-up)
This commit is contained in:
@@ -78,12 +78,13 @@ echo "===== 冒烟测试 ====="
|
||||
# >>> cma-readiness-poll(最小可抽取块:scripts/tests 按行首标记 awk 抽取后原样执行,改结构请沿用标记)
|
||||
SMOKE_READY_MAX="${SMOKE_READY_MAX:-30}"
|
||||
HEALTH_URL="${SMOKE_HEALTH_URL:-http://127.0.0.1:8010/health}"
|
||||
READY_TRIES=$(( SMOKE_READY_MAX * 2 ))
|
||||
READY_TRY=0
|
||||
READY_T0=$(date +%s)
|
||||
READY_OK=0
|
||||
READY_BODY_FILE="$(mktemp -t cma-ready-body.XXXXXX)"
|
||||
while [ "$READY_TRY" -lt "$READY_TRIES" ]; do
|
||||
# 上限按**墙钟**判定(不是轮询次数):目标"接受连接但不响应"时单次探测要耗满 --max-time 2s,
|
||||
# 用次数当上限会让"上限 30s"实际跑到 150s。墙钟判定下最坏 = SMOKE_READY_MAX + 单次探测(≤2s) 的余量。
|
||||
while [ $(( $(date +%s) - READY_T0 )) -lt "$SMOKE_READY_MAX" ]; do
|
||||
READY_CODE=$(curl -s -o "$READY_BODY_FILE" -w '%{http_code}' --max-time 2 "$HEALTH_URL" 2>/dev/null || echo 000)
|
||||
if [ "$READY_CODE" = "200" ] && grep -q '"status"[[:space:]]*:[[:space:]]*"ok"' "$READY_BODY_FILE" 2>/dev/null; then
|
||||
READY_OK=1
|
||||
|
||||
Reference in New Issue
Block a user