bug: an object-store 404 with an empty reason phrase makes a missing transcript a 502 instead of a 404
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 25/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 停滞
- 技术栈
- typescript
- 领域
- backend
调研方向
从 apps/webapp/app/v3/objectStoreClient.server.ts:135-141 入手,这里 getObjectResponse 抛出错误时只使用 response.statusText;以及 apps/webjapp/app/services/realtime/transcriptDownload.server.ts:46-54 中的 isTranscriptNotFound,它用固定的 "Not Found" 正则匹配消息。将 response.status 带到抛出的错误上,并让 isTranscriptNotFound 先检查 status。在 transcriptDownload.server.test.ts 中添加回归测试,使用一个返回 HTTP/1.1 404 \r\nContent-Length: 0\r\n\r\n 的本地 TCP 服务器;当该测试通过,且 transcript 测试套件、oxfmt、oxlint 和 webapp typecheck 均保持绿色时即为完成。注意:关联的 PR #4987 已存在(已关闭、未合并),作者表示本地已有修复,因此开始前请先确认该 issue 尚无人认领。
由索引模型根据 Issue 内容生成。
描述
Provide environment information
Not environment-specific: found in the webapp source at main @ c2b7a72180 and reproduced with the webapp's own Vitest suite (macOS arm64, pnpm).
Describe the bug
A missing transcript can return 502 instead of 404 when the object store's 404 response has an empty reason phrase.
-
Aws4FetchClient.getObjectResponse(apps/webapp/app/v3/objectStoreClient.server.ts:135-141) throws an error built only fromresponse.statusTextand discardsresponse.status:throw new Error(`Failed to download from object store: ${response.statusText}`); -
isTranscriptNotFound(apps/webapp/app/services/realtime/transcriptDownload.server.ts:46-54) recognizes this adapter's missing object only by matching the message against/^Failed to download(?: range)? from object store: Not Found$/.
A valid HTTP/1.1 404 with no reason phrase gives the message Failed to download from object store: . It isn't classified as not found, so the route answers with a download failure (502).
Expected: a 404 from the object store is recognized by its status code, whatever the reason phrase says.
Reproduction repo
N/A (test against this repo, below)
To reproduce
In transcriptDownload.server.test.ts, start a local TCP server that replies HTTP/1.1 404 \r\nContent-Length: 0\r\n\r\n. Point ObjectStoreClient.create({ baseUrl: "http://127.0.0.1:<port>", service: "s3", ... }) at it, then:
await expect(client.getObjectResponse(key)).rejects.toSatisfy(isTranscriptNotFound);
On main this fails, because the error message is Failed to download from object store: and it isn't recognized.
Additional information
A fix with this regression test and a .server-changes note is ready locally:
- the thrown error carries
status: 404; isTranscriptNotFoundchecks the status first.
The transcript suite (8 passed), oxfmt, oxlint and webapp typecheck pass. I'll open it as a draft PR with fixes #<this> once the account is vouched.
Prepared with AI assistance (Claude) from the breken-ai account.
- 主要语言
- TypeScript
- 星标
- 16.5k
- 派生
- 1.5k
- 平均合并
- 1 天 15 小时
- 30 天内合并 PR
- 17
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
triggerdotdev/trigger.dev 的其他 Issue
-
bug: retry.fetch ignores the caller's abort signal and retries aborted requests可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
triggerdotdev/trigger.dev#5116 · 2 条评论 ·
维护者通常 1 天内回复
-
bug: Chat transport crashes on Safari < 17.4: AbortSignal.any is not a function可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 2/5 1-3 小时 新手友好度 83/100
triggerdotdev/trigger.dev#5098 · 2 条评论 ·
维护者通常 1 天内回复
-
bug: Side menu items lose their active state on detail pages可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
triggerdotdev/trigger.dev#5088 ·
维护者通常 1 天内回复
-
bug: RBAC loader logs "plugin found but failed to load" when @triggerdotdev/plugins is simply not installed可能重新可做 @itsfaryal 于 17 天前认领,目前没有进行中的 PR。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
triggerdotdev/trigger.dev#5083 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 83/100
triggerdotdev/trigger.dev#5072 · 1 条评论 ·
维护者通常 1 天内回复
查看 triggerdotdev/trigger.dev 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
bug platform-android
难度 2/5 1-3 小时 新手友好度 68/100
Termix-SSH/Mobile#146 · 1 条评论 ·
维护者通常 2 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 66/100
devswha/herdr-web-ui#3875 ·
-
难度 1/5 1 小时以内 新手友好度 88/100
-
area: runtime chore cli consistency dependencies developer-experience difficulty: easy discovery documentation enhancement good first issue help wanted hygiene json-output packaging priority: P3 tests version
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复