Repository navigation
v1.8.1
A patch release, mostly for schedulers backed by Redis and for CAS uploads that retry. Upload retries after a reset now replay the whole body every time; before, every retry after the first sent an empty body and failed with InvalidArgument. The Redis scheduler creates its RediSearch index as persistent, because RediSearch never garbage collects a temporary index and every query paid for its dead entries. A filter pass still reads its listed records one at a time: an interim change that read them 64 at a time broke the scheduler's Redis connection under a queue burst and is reverted in this release. The memory-backed scheduler reads its whole listing up front instead of holding its lock inside the stream, and the filesystem store's has() reports content length.
The one new feature is opt-in: telemetry can be exported over TLS to an https OTLP collector. The release also fixes OSV advisories in rustls-webpki, webpki-roots, follow-redirects, DOMPurify and Next.js, and upgrades to Bazel 9.3.1 and 8.8.2. Worth taking for any deployment with a Redis scheduler or a slow-store upload path that retries; no configuration changes are needed.
What's Changed
⛰️ Features
🐛 Bug Fixes
- (scheduler) read the memory store's listing whole, never under the lock inside the stream by @b7r6 in (#3013) - (13939b5)
- Replay a reset buf_channel stream on every retry, not only the first: later upload retries sent an empty body and failed with InvalidArgument by @ashishsonamm in (#3026) - (547a151)
- Read a filter pass's listed records one at a time again: the 64-way reads broke the scheduler's Redis connection under a queue burst by @amankrx in (#3021) - (86c2923)
- Report content length from filesystem store has() by @ashishsonamm in (#3006) - (b014176)
- Read the listed records of a filter pass 64 at a time so a deep queue on Redis lists inside the provisioner's timeout by @amankrx in (#3001) - (4edf822)
- Create the scheduler index persistent: RediSearch never garbage collects a temporary index and every query pays for the dead entries by @amankrx in (#3000) - (05bb310)
🧪 Testing & CI
- Run primary Bazel CI on warm NativeLink workers by @MarcusSorealheis in (#3016) - (e44d020)
- Build the shared Nix CI package once on a warm client by @MarcusSorealheis in (#3027) - (259db4e)
- Compare the webpki root store with assert_ne so pedantic Clippy accepts the non-empty guard by @matdexir in (#3007) - (8a93851)
- Rename GitHub Actions workflows to an Area / Concern scheme by @matdexir in (#2997) - (113fee0)
⬆️ Bumps & Version Updates
- Fix nine OSV advisories in rustls-webpki, follow-redirects, DOMPurify and Next.js by @MarcusSorealheis in (#3022) - (e51df03)
- Fix rustls-webpki and follow-redirects advisories [SECURITY] by @MarcusSorealheis in (#3020) - (daa028f)
- Upgrade to Bazel 9.3.1 and 8.8.2 by @MarcusSorealheis in (#3015) - (a7bb376)
- Update Rust crate webpki-roots to v1.0.10 [SECURITY] by @renovate[bot] in (#2987) - (21ae178)
- Refresh ca-certificates apt pin in Compose image by @matdexir in (#2994) - (818a71d)
Full Changelog: v1.8.0...v1.8.1