Skip to content

JSR serving stale manifest from some Cloudflare POPs #1472

Description

@phinnaeus

I published a new version of my package @phinnaeus/cedrine@0.6.0 about 6 hours ago (00:56 UTC). I have an application which uses this package, so I bumped the version in my package.json and ran pnpm install to regenerate my lockfile. This worked fine from my laptop in Sydney. Unfortunately my Gitlab CI pipeline insists that this version doesn't actually exist yet. This surfaces as the following error:

? Verifying lockfile against supply-chain policies (273 entries)...
Lockfile is up to date, resolution step is skipped
Progress: resolved 1, reused 0, downloaded 0, added 0
.                                        | +121 ++++++++++++
Progress: resolved 121, reused 0, downloaded 43, added 0
Progress: resolved 121, reused 0, downloaded 54, added 0
✗ Lockfile failed supply-chain policy check (273 entries in 2.3s)
Progress: resolved 121, reused 0, downloaded 120, added 8
Progress: resolved 121, reused 0, downloaded 121, added 121, done
[ERR_PNPM_TARBALL_URL_MISMATCH] 1 lockfile entries failed verification:
  @jsr/phinnaeus__cedrine@0.6.0 could not be verified against the registry's published metadata

The reason it cant be verified against the registry's metadata is because the metadata being returned is from 16+ hours ago at this point, but only for a combination of factors: ATL Cloudflare POP + url-encoded request (GET /@jsr%2Fphinnaeus__cedrine instead of GET /@jsr/phinnaeus__cedrine). Both forms of the URL return the correct, up-to-date manifest when I hit them from Sydney. I can't seem to control what version of the URL pnpm uses unfortunately, but the fact that they are different seems clearly unintended.

The weird thing is the bad manifest response shows an age which is MUCH older than the reported max-age:

cf-ray: ...-ATL   cf-cache-status: HIT   age: 45241
cache-control: public, max-age=60, s-maxage=60
etag: "93aac0fd5366fc81165ad8702fc514fc"   (0.6.0 absent)

No idea what's going on with that. I did find a couple of possibly related issues such as #1317 and #1456.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Needs Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions