JianFeeeee
c9209e4adc
fix(deploy): 失败通知不再把所有失败都说成「Gateway 不可达」
# 误导的来源
`reportFailure` 只在 `result.sent` 上分叉,而 sent 为假同时覆盖「fetch 抛」「HTTP 4xx/5xx」,
于是两种情况都打印同一句话。
# 实测代价
切换插件时 dsh 进了崩溃循环(我自己的部署缺陷所致),通知脚本连打六条
「Gateway 不可达」并写进 spool —— 而网关**一直在正常服务**(NRestarts=0),
日志里真实响应是 **HTTP 403**:
POST http://127.0.0.1:8180/api/v1/mail/send ... - 403 245B
403 的原因是同一会话连续中继邮件撞上防「两个 Agent 互相唤醒」的跳数上限
(`maxRelayHops=5`):告警邮件的会话别名由主题派生,崩溃循环下六封落进同一条会话。
一句话把人送去查网络,而问题在策略层 —— **故障通知本身给出误导性诊断,
是「静默失败」的另一种形态**。
# 修法
新增 `describeSendError`:`Gateway HTTP <status>: <body>` 归类为「网关可达,但返回
HTTP xxx(附响应体)」;只有 fetch 本身失败 / AbortError 才说「不可达」/「超时」。
双向验证(真实走代码路径,都不实际发信):
网关指向关闭端口 → 「网关不可达:fetch failed」
真网关 + 坏密钥 → 「网关可达,但返回 HTTP 401:{"error":"密钥无效"}」
2026-09-12 11:52:52 +08:00
..
2026-09-02 10:29:26 +08:00
2026-09-12 11:36:25 +08:00
2026-09-12 11:20:13 +08:00
2026-09-11 11:32:47 +08:00
2026-09-11 10:27:41 +08:00
2026-09-11 10:27:41 +08:00
2026-09-08 19:16:35 +08:00
2026-09-12 11:47:32 +08:00
2026-09-06 15:18:06 +08:00
2026-09-02 20:05:51 +08:00
2026-09-12 11:52:52 +08:00