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

ben-manes / caffeine / #5659
100%
master: 100%

Build:
Build:
LAST BUILD BRANCH: v3.dev
DEFAULT BRANCH: master
Ran 19 Jul 2026 06:54PM UTC
Jobs 1
Files 78
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

19 Jul 2026 06:40PM UTC coverage: 100.0%. Remained the same
#5659

push

github

ben-manes
Reschedule jcache access expiry outside the compute

The jcache access-expiry paths ran policy().setExpiresAfter (which calls
afterWrite) from inside their own cache.asMap().compute* lambdas on the
failed-conditional remove/replace and invoke-READ branches, violating
Cache.policy(): under the bin lock afterWrite can block on the eviction
lock (ABBA) or run maintenance inline (a nested same-bin CHM mutation).

On those write paths the reschedule is redundant: the enclosing compute's
Expiry (ExpirableToExpiry, which derives the deadline from the Expirable
timestamp) refreshes the native timer on commit, and expireAfterUpdate
fires even on a same-instance return. Split setAccessExpireTime into
getAccessExpireTime (eval), setAccessExpireTime (write the timestamp, all
paths), and setVariableExpiration (poke the native timer, reads only);
write paths now write only the timestamp and let the compute refresh it.

Add native-timer regression tests for the three write paths; the prior
mismatch/invoke tests asserted only the Expirable field, leaving the
native timer on write paths untested.

4193 of 4200 branches covered (99.83%)

41 of 41 new or added lines in 2 files covered. (100.0%)

8454 of 8454 relevant lines covered (100.0%)

1.0 hits per line

Jobs
ID Job ID Ran Files Coverage
1 #5659.1 19 Jul 2026 06:54PM UTC 78
100.0
Source Files on build #5659
  • Tree
  • List 78
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 117c2d5e on github
  • Prev Build on v3.dev
  • Next Build on v3.dev
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc