背景
@gocell/request 的共享 axios 实例 packages/request/src/http.ts 用 axios.create() 创建,未设默认 timeout——任何请求遇后端 TCP 接受但不响应(挂起)时会永久 pending。
PR #65(#27)review(reviewer B,Cx2)指出:apps/web 的 bootstrapSession() 在 app.mount() 前 await 一次 POST /sessions/refresh,若该请求永久挂起 → app 永不挂载 → 永久白屏。
PR #65 已就 refresh 路径加 timeout: 10s 兜底(useAuthStore.refresh()),但其余所有请求(health 轮询、各列表端点、login/logout 等)仍无超时,全请求面的既有缺口未闭合。
范围
备注
非 #27 阻断项;#27 已在 refresh 路径兜底了最关键的 mount-blocking 场景。本 issue 收口全局缺口。
背景
@gocell/request的共享 axios 实例packages/request/src/http.ts用axios.create()创建,未设默认timeout——任何请求遇后端 TCP 接受但不响应(挂起)时会永久 pending。PR #65(#27)review(reviewer B,Cx2)指出:
apps/web的bootstrapSession()在app.mount()前await一次POST /sessions/refresh,若该请求永久挂起 → app 永不挂载 → 永久白屏。PR #65 已就 refresh 路径加
timeout: 10s兜底(useAuthStore.refresh()),但其余所有请求(health 轮询、各列表端点、login/logout 等)仍无超时,全请求面的既有缺口未闭合。范围
packages/request/src/http.ts的axios.create({ timeout: <默认值> })设全局默认超时(建议 15s,可按端点覆盖)useAuthStore.refresh()里的 per-requesttimeout: 10s是否可改为依赖全局默认(去重)http.spec.ts超时行为单测备注
非 #27 阻断项;#27 已在 refresh 路径兜底了最关键的 mount-blocking 场景。本 issue 收口全局缺口。