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

Aperta
#4,983 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

  • #4993 di @StackedByAdit — chiusa senza merge

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
20/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
typescript
Ambito
backend

Direzione di ricerca

Parti da apps/webapp/app/env.server.ts:777-785 e conferma che .multipleOf(10) rifiuta 15 mentre refine ammette i divisori di 60; il primo passo è controllare la PR chiusa #4993 per capire perché la correzione precedente non è stata unita. Si considera completato quando il parsing di "15" e "120" ha successo, "7" fallisce ancora e la suite env di Vitest del webapp resta verde.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
TypeScript
Stelle
16.5k
Fork
1.5k
Merge medio
1g 15h
PR unite (30g)
17

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di triggerdotdev/trigger.dev

Tutte le issue di triggerdotdev/trigger.dev

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.