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

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

Build:
Build:
LAST BUILD BRANCH: v3.dev
DEFAULT BRANCH: master
Ran 14 Jul 2026 08:55PM 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

14 Jul 2026 08:25PM UTC coverage: 99.964% (-0.02%) from 99.988%
#5637

push

github

ben-manes
Publish an EntryProcessor's expired prior before the processor runs

Mirror BoundedLocalCache's evict-before-callback ordering in the jcache
invoke path. A lazily-expired prior is reconciled inline before the
processor runs: it publishes EXPIRED and counts the eviction up front,
then the processor sees the entry as absent. On any Throwable from the
processor or a write-through CacheWriter, the expired prior's removal is
committed, its synchronous EXPIRED listener is awaited, and the failure
is rethrown after the compute returns (catch-commit-rethrow) via
processorFailure -- an Error as-is, otherwise an EntryProcessorException
per Cache.invoke's contract. So a failed invoke still fires exactly one
EXPIRED and one eviction; the expiration is a clock fact, not contingent
on the operation succeeding.

postProcess is now expiry-free: a null prior means the entry was absent,
so READ/UPDATED (which require a live prior) never observe one and their
requireNonNull is a proven invariant. This drops the hoisted null that
made READ/UPDATED look NPE-prone (superseding #1992) and the
currentTimeMillis == 0 re-read sentinel.

Tests: postProcess reduced to 2-arg replay plus an eternal invoke guard
(isEternal shields hasExpired from a negative-clock overflow); and
invoke-level guards for an expired prior under create, remove, a thrown
RuntimeException and Error, an awaited synchronous listener on the async
executor, and EXPIRED-before-CREATED ordering. Verified with
:jcache:test and :jcache:tckTest.

4137 of 4148 branches covered (99.73%)

24 of 26 new or added lines in 1 file covered. (92.31%)

8411 of 8414 relevant lines covered (99.96%)

1.0 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
99.73
-0.27% jcache/src/main/java/com/github/benmanes/caffeine/jcache/CacheProxy.java
Jobs
ID Job ID Ran Files Coverage
1 #5637.1 14 Jul 2026 08:55PM UTC 78
99.96
Source Files on build #5637
  • Tree
  • List 78
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • e249557f 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