• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mozilla-releng / balrog / #5279
90%

Build:
DEFAULT BRANCH: main
Ran 03 Mar 2026 02:51PM UTC
Jobs 1
Files 61
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Mar 2026 02:44PM UTC coverage: 89.907% (+0.007%) from 89.9%
#5279

push

circleci

web-flow
Bug 2013441 - Use orjson to serialize/deserialize objects for the redis cache (#3659)

The main thing here is that Blobs cannot be deserialized from JSON
directly so we have to provide a specific loader to the redis cache,
which is why we weren't using orjson in the first place. The commit is
mostly plumbing to pass the post_load arg through all of the right
cache layers/factories.

I originally thought about making this less invasive and just returning
the value as is from the cache and let the caller decide what to do with
what it got back from the cache (for blobs it could either get a dict or
a Blob object based on whether the cache was hit or not, which could
easily be detected by always calling createBlob on the result and
returning early if it was already a Blob). I went back on this because
it felt more fragile and error prone than doing the conversion
explicitly. It's still no perfect still those cache definitions aren't
tested properly and short of deactivating the LRU cache they're hard to
test locally.

I tested this by disabling the LRU cache completely and using an `assert
cache_value == value_getter()` in the cache hit path then hitting
`/update/3/Firefox/42.0/0/Linux_x86_64-gcc3/en-US/release/None/default/default/update.xml`
on the public API. Everything worked fine.

All the other public caches use trivial objects so we don't need special
loaders for them. The admin app doesn't have redis configured.

I removed test_release_blobs_can_log_after_pickling since it's
irrelevant now but decided against reverting
e8cb2ec09 entirely because getting a
logger once per class instead of once per object still sounds like an
improvement we'd want and the other test to deepcopy is also still
relevant for caches using `make_copies`.

2167 of 2548 branches covered (85.05%)

Branch coverage included in aggregate %.

14 of 15 new or added lines in 1 file covered. (93.33%)

5734 of 6240 relevant lines covered (91.89%)

0.92 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
85.09
0.58% src/auslib/util/cache.py
Jobs
ID Job ID Ran Files Coverage
1 #5279.1 03 Mar 2026 02:51PM UTC 61
89.91
Source Files on build #5279
  • Tree
  • List 61
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • CircleCI Build #5279
  • 9a45069f on github
  • Prev Build on main
  • Next Build on main
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc