Skip to content

fix(cli): Handle malformed sourcemaps and timestamps - #1609

Merged
BYK merged 1 commit into
mainfrom
fix/cli-malformed-data-guards
Oct 23, 2026
Merged

BYK merged 1 commit into
mainfrom
fix/cli-malformed-data-guards

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Oct 22, 2026

Copy link
Copy Markdown
Contributor
  • sentry sourcemap inject crashed with a bare SyntaxError when a companion .map file wasn't valid JSON. It now throws a ValidationError that names the file, before touching the JS bundle. The dry-run path already handled this case.
  • formatRelativeTime printed the literal text "Invalid Date" for a timestamp it couldn't parse. It now shows the same muted dash as a missing timestamp.

Ported from getsentry/cli#1118 and getsentry/cli#1200, which are being closed with the repo archive. The other fixes in those PRs were already on main or not worth porting (details in the close comments).

via BYK.

--

View Junior Session in Sentry

- `sentry sourcemap inject` crashed with a bare SyntaxError when a
  companion .map file was not valid JSON. It now throws a ValidationError
  that names the file, before touching the JS bundle. The dry-run path
  already tolerated this.
- formatRelativeTime rendered the literal text "Invalid Date" for an
  unparseable timestamp. It now shows the same muted dash as a missing
  one.

Ported from getsentry/cli#1118 and getsentry/cli#1200.

Co-Authored-By: BYK <[email protected]>
@vercel

vercel Bot commented Oct 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
sentry-local Skipped Skipped Oct 22, 2026 6:31pm UTC

Request Review

@BYK
BYK merged commit 1a91f52 into main Oct 23, 2026
26 checks passed
@BYK
BYK deleted the fix/cli-malformed-data-guards branch October 23, 2026 11:29
BYK added a commit that referenced this pull request Oct 23, 2026
Ports the token-lifetime fix that was left out of #1609 (from
getsentry/cli#1200).

If a stored `issued_at` is at or after `expires_at`, the
remaining-lifetime ratio comes out as `Infinity` (zero lifetime) or
flips sign. With `Infinity`, `refreshToken` and the API client skip
proactive refresh, and the token only refreshes after it has already
expired.

The original PR clamped the lifetime to `Math.max(1, …)`. That doesn't
fix it: dividing the remaining milliseconds by 1ms still gives a huge
ratio for any unexpired token, so refresh is still skipped. Instead,
when the stored lifetime isn't positive, this falls back to
`DEFAULT_TOKEN_LIFETIME_MS`, the same fallback used when `issued_at` is
missing.

`refreshToken` and `fetchWithRetry` each computed the ratio inline. They
now share `getRemainingLifetimeRatio`, so the two can't drift apart.
Valid rows behave the same as before.

The project-cache read TTL from the original PR is still out of scope,
per the archive note.

<!-- junior-request-attribution:start -->
via **BYK**.
<!-- junior-request-attribution:end -->

<!-- junior-session-footer:start -->
<!-- junior-conversation-id:local%3Aweb%3A2437518694fe8bb99774573a -->

--

[View Junior Session in
Sentry](https://sentry.sentry.io/explore/conversations/local%3Aweb%3A2437518694fe8bb99774573a/?project=4510944073809921)

<!-- junior-session-footer:end -->

Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
Co-authored-by: BYK <[email protected]>

This branch was previously deployed

1 inactive deployment
Preview — 8db64de8 Deployed Oct 22, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: low PR risk score: low

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant