外部 cron 触发排空队列时,/worker 走 Worker 域名会被 404 route not forwarded 挡掉,只能直连后端 origin;而 /reconcile 早就能走 Worker。cron 脚本因此被迫 维护两个域名。现把 /worker 与 /reconcile 成对放进 safelist(17 -> 18 条), cron 只需一个平台域名。 同时给它配独立超时:全局 LB_REQUEST_TIMEOUT_MS 默认 10s 会把一次正常的排空 误判成失败,而 maxAttempts=2 切到第二实例毫无意义——第二个实例只会重复排 同一批消息。故新增 LB_WORKER_TIMEOUT_MS(默认 300000ms,等于后端单条事件 下界 state.rs SINGLE_EVENT_CEILING_FLOOR_MS),并强制 maxAttempts=1。 - SAFE_ROUTES 加 "/worker";ROUTE_METHODS 加 "/worker": ["POST"](GET => 405) - 新增 DEFAULT_WORKER_TIMEOUT_MS = 300_000 与 per-route 覆盖分支 - LB_VERSION 2026.10.2 -> 2026.10.3(改 LB 逻辑须 bump) - test/index.test.js 新增回归:/worker maxAttempts=1、默认 300s、env 覆盖、 GET /worker => 405 且不打到后端 - test/backends.test.js safelist 用例补 /worker 与 /api/business-config/preflight node --test:37 通过 / 0 失败(index 14 / backends 6 / health 5 / lb 12)。 |
||
|---|---|---|
| .. | ||
| backends.test.js | ||
| health.test.js | ||
| index.test.js | ||
| lb.test.js | ||