bug: an object-store 404 with an empty reason phrase makes a missing transcript a 502 instead of a 404
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- typescript
- Bereich
- backend
Rechercherichtung
Beginne in apps/webapp/app/v3/objectStoreClient.server.ts:135-141, wo getObjectResponse nur mit response.statusText einen Fehler wirft, sowie bei isTranscriptNotFound in apps/webapp/app/services/realtime/transcriptDownload.server.ts:46-54, das die Nachricht mit einem festen "Not Found"-Regex abgleicht. Übertrage response.status auf den geworfenen Fehler und lasse isTranscriptNotFound zuerst den Status prüfen. Füge den Regressionstest in transcriptDownload.server.test.ts hinzu, der einen lokalen TCP-Server verwendet, der HTTP/1.1 404 \r\nContent-Length: 0\r\n\r\n zurückgibt; fertig, wenn dieser Test grün ist und die Transcript-Suite, oxfmt, oxlint und der Webapp-Typecheck grün bleiben. Hinweis: Der verlinkte PR #4987 existiert (geschlossen, nicht gemergt), und der Autor gibt an, dass ein Fix lokal fertig vorliegt; bestätige daher vor dem Start, dass das Issue niemandem zugewiesen ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 16.5k
- Forks
- 1.5k
- Ø Merge
- 1 T. 15 Std.
- Gemergte PRs (30 T.)
- 17
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus triggerdotdev/trigger.dev
-
bug: retry.fetch ignores the caller's abort signal and retries aborted requestsEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
triggerdotdev/trigger.dev#5116 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug: Chat transport crashes on Safari < 17.4: AbortSignal.any is not a functionEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
triggerdotdev/trigger.dev#5098 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug: Side menu items lose their active state on detail pagesEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
triggerdotdev/trigger.dev#5088 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug: RBAC loader logs "plugin found but failed to load" when @triggerdotdev/plugins is simply not installedEvtl. wieder frei @itsfaryal hat das vor 17 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
triggerdotdev/trigger.dev#5083 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
triggerdotdev/trigger.dev#5072 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in triggerdotdev/trigger.dev
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug platform-android
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Termix-SSH/Mobile#146 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
devswha/herdr-web-ui#3875 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 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
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag