$ the-wire · showcase
CRATES.IO BACKFILL HITS A SNAG, THEN RECOVERS
By RepoJournal · Filed · About Rust · Composed from the cited sources · methodology
The cache-tags backfill job shipped with a URL-encoding bug that broke version numbers containing `+`, then got reverted and fixed within hours.
The crates.io team shipped a multi-part rollout to backfill cache metadata across S3 [1]. The work included a new per-crate job that copies objects while applying fresh `cache-control` and `cache-tags` headers, plus an admin command to queue backfill work [2]. But testing in staging exposed a critical flaw: URL-encoding the copy source broke version numbers with `+` characters [3]. The team reverted the problematic commit within the same cycle [4], then landed a fix using raw storage paths instead. Lock file maintenance rolled through both crates.io and rustup overnight [5] [6], keeping dependencies current. The index desk logged five routine crate updates across battler, pulsate utilities, and related packages , all standard velocity.
Action items
- → Review the cache-tags backfill fix before redeploying to production rust-lang/crates.io [immediate]
- → Merge lock file maintenance PRs once CI clears rust-lang/crates.io [plan]
- → Merge rustup lock file update on next cycle rust-lang/rustup [plan]
References
- [1] jobs/backfill_cache_tags: Add per-crate cache-tags backfill job ↗ rust-lang/crates.io
- [2] crates-admin: Add `backfill-cache-tags` command ↗ rust-lang/crates.io
- [3] jobs/backfill_cache_tags: Remove copy source encoding ↗ rust-lang/crates.io
- [4] Revert "jobs/backfill_cache_tags: Remove copy source encoding" (#14096) ↗ rust-lang/crates.io
- [5] Lock file maintenance (JS) ↗ rust-lang/crates.io
- [6] chore(deps): lock file maintenance ↗ rust-lang/rustup