Skip to content

v0.4.29

Choose a tag to compare

@github-actions github-actions released this 07 Aug 03:21
· 19 commits to main since this release

Fixed

  • 修复断网恢复后隧道长时间不通:NetworkWatcher 此前把「无路由」(空指纹)直接忽略,于是拔插网线、睡眠唤醒、路由器重启后 DHCP 分回同一 IP 这三种情况前后指纹相同,watcher 完全不发通知,隧道一直卡在旧的边缘连接上。现在把空指纹记录为有效状态:有→空 只记录不回调(无路由时重连无意义),空→有 触发回调(即使地址与断网前相同)。
  • 修复隧道断开后恢复过慢的三处短板:连接数掉到 0 时第一次探测就立刻软重连(跳过 cloudflared 自身的指数退避),_TUNNEL_RECONNECT_TIMEOUT 由 60 秒收紧到 5 秒后仍为 0 才重启进程,进程已死 / stdin 不可用时直接升级重启;隧道处于非健康 running 状态时强制走 3 秒探测档(此前只看网关健康度,隧道断了但网关健康会停在 15 秒档);穿隧道 e2e 探活连续失败 2 次即触发软重连,此前「降级(边缘不可达)」只显示状态、永不自动恢复(失败计数在 _probe_tunnel_e2e 内部维护,区分「真的探测失败」与「被 60 秒节流跳过」)。综合效果:断网到隧道重新连通从最坏 20–35 秒降到 2–4 秒,连接数掉 0 的发现时间从 15 秒降到 3 秒,边缘不可达从「永不恢复」变为约 7–10 秒。
  • 修复流式对话进行中点「重启网关」十几秒没反应:uvicorn 收到 SIGTERM 会等在途 SSE 请求结束,而用户点重启往往正是因为请求卡住。优雅停止窗口从硬编码 10 秒收紧为 GRACEFUL_STOP_TIMEOUT = 5.0,SIGKILL 后的收尸等待提为 KILL_REAP_TIMEOUT = 5.0;重启时在真正开始停止前先弹「正在重启网关…」通知,消除「点了没反应」的观感。

Changed

  • 同步上游网关至 main-97cfd67:凭据文件(kiro-auth-token.json)改为原子写。此前 _save_credentials_to_file()open(path, 'w') 覆盖,'w' 模式一打开就把原文件截断为 0 字节,若进程在写完前被 SIGKILL(或断电 / 崩溃)会留下半个 JSON,accessToken / refreshToken 一起损坏,下次启动解析失败、用户必须重新登录。现改为同目录临时文件 + Path.replace() 原子重命名(与 account_manager._save_state() 一致),临时文件以 0600 创建、存在原文件时沿用其权限位,失败路径清理残留临时文件,且保留「保存失败不让 token 刷新整体失败」的兜底语义。本次收紧的 SIGKILL 窗口正建立在这个保证之上。
  • docker-compose 镜像 pin 至 ghcr.io/zhujunsan/kiro-gateway:main-97cfd67

Full Changelog: v0.4.28...v0.4.29