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

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

Build:
Build:
LAST BUILD BRANCH: v3.dev
DEFAULT BRANCH: master
Ran 29 Jul 2026 04:21AM 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

29 Jul 2026 03:40AM UTC coverage: 99.976% (-0.01%) from 99.988%
#5694

push

github

ben-manes
Keep the timer wheel's detached bucket on a well-formed list

Expiring a bucket detaches it so that a recursive call cannot find
those entries, but the chain was reachable only from the expire
frame and its ends still referenced the live sentinel. Hiding the
bucket only defeats a traversal; a nested caller arrives with a
reference it already holds, such as a pending removal descheduling
an entry. Descheduling the successor that the walk carried nulled
that node's links, so the walk threw outside the per-node catch and
the rest of the chain was stranded, its timers never firing again.

The bucket now moves onto a pending sentinel, so the head lives in
a field that an ordinary unlink repairs and the walk re-reads each
iteration. Both lists stay circular because a scheduled entry is
recognized by its non-null links, which a linear chain would break
at the tail. The hand-rolled restitch and the budget's splice
collapse into restoring whatever remains when the bucket is put
back.

An advance defers while one is in progress rather than appending to
the bucket being processed and moving the clock beneath its caller.

The fuzzer now re-enters the wheel from the eviction callback, where
a bucket is detached, and checks the buckets stay well-formed.

4202 of 4213 branches covered (99.74%)

30 of 30 new or added lines in 1 file covered. (100.0%)

1 existing line in 1 file now uncovered.

8482 of 8484 relevant lines covered (99.98%)

1.0 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
98.78
-1.22% caffeine/src/main/java/com/github/benmanes/caffeine/cache/StripedBuffer.java
Jobs
ID Job ID Ran Files Coverage
1 #5694.1 29 Jul 2026 04:21AM UTC 78
99.98
Source Files on build #5694
  • Tree
  • List 78
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 3e66fe9d 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