bug: webapp rejects API_RATE_LIMIT_METRICS_BUCKET_SECONDS=15 although the schema says divisors of 60 are valid

Offen
#4,983 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

  • #4993 von @StackedByAdit — ohne Merge geschlossen

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
20/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Veraltet
Tech-Stack
typescript
Bereich
backend

Rechercherichtung

Beginne in apps/webapp/app/env.server.ts:777-785 und bestätige, dass .multipleOf(10) 15 ablehnt, während refine Teiler von 60 zulässt; der erste Schritt ist, den geschlossenen PR #4993 zu prüfen, um zu sehen, warum die frühere Korrektur nicht gemerged wurde. Fertig bedeutet, dass das Parsen von "15" und "120" erfolgreich ist, "7" weiterhin fehlschlägt und die Vitest-env-Suite des Webapps grün bleibt.

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

The webapp refuses to start with API_RATE_LIMIT_METRICS_BUCKET_SECONDS=15, although the schema's own rule says 15 is valid.

In apps/webapp/app/env.server.ts:777-785:

API_RATE_LIMIT_METRICS_BUCKET_SECONDS: z.coerce.number().int().positive()
  .multipleOf(10)
  .refine((seconds) => 60 % seconds === 0 || seconds % 60 === 0, {
    message: "must divide or be a multiple of 60 so buckets align to minute boundaries",
  })

The refine accepts any divisor or multiple of 60, which is the alignment the metrics aggregator needs. .multipleOf(10) runs first, though, and rejects the minute-aligned divisors 15 (and 1–6, 12). Environment parsing fails at startup with a Zod "multiple of 10" error.

Expected: 15 (and 120) parse, 7 is still rejected.

Reproduction repo

N/A (schema test against this repo, below)

To reproduce
  1. Set API_RATE_LIMIT_METRICS_BUCKET_SECONDS=15 and start the webapp. Env validation fails.
  2. Or, as a test: parse "15" with the schema entry above. It fails with Number must be a multiple of 10.
Additional information

A fix is ready on the breken-ai/trigger.dev fork (breken/fix-rate-limit-metrics-bucket-validation):

  • It drops the contradictory .multipleOf(10) and moves the schema into app/utils/apiRateLimitMetricsBucketSecondsSchema.ts, so it can be tested.
  • The regression test asserts 15 and 120 parse and 7 fails. It's red on main and green with the fix.
  • Env + new schema tests: 19 passed. oxfmt, oxlint and webapp typecheck are clean.

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

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus triggerdotdev/trigger.dev

Alle Issues in triggerdotdev/trigger.dev

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.