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

go-pkgz / lcw / 32208387310
94%
master: 94%

Build:
Build:
LAST BUILD BRANCH: refs/tags/v2.1.0
DEFAULT BRANCH: master
Ran 19 Aug 2026 02:24AM UTC
Jobs 1
Files 22
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

18 Aug 2026 11:11PM UTC coverage: 94.328% (-1.1%) from 95.419%
32208387310

push

github

web-flow
fix size limits, key limits, load stampede, redis namespacing and scoped flush (#51)

* apply go fix: interface{} to any, sort.Slice to slices.Sort

mechanical rewrite produced by go fix, no behaviour changes

* update dependencies, replace go-multierror with errors.Join

go-redis to v9.18.0, miniredis to v2.38.0, testify to v1.12.0, uuid to v1.6.0,
all the latest versions still compatible with the go 1.21 directive.

hashicorp/go-multierror dropped in favour of the standard errors.Join,
which changes the combined error text in url parsing.

* fix CI: test and build all packages, pin goveralls, explicit push refs

go test and go build ran without ./... so eventbus and internal/cache were never
tested in CI. go get -v dropped, it modified the dependency graph instead of
validating the committed one. goveralls pinned to a release instead of @latest.
push trigger got explicit branches and tags, the empty form is flagged by actionlint.

* fix size accounting, key limits, load stampede and redis namespacing

size limits: MaxCacheSize and MaxValSize only applied to values implementing
Sizer, so []byte and string values were never limited at all. Both are now sized
by length, which makes the limits effective for Scache and any []byte cache.

MaxKeys(0): documented as unlimited, but the expirable cache rejected every
insert and the lru constructor returned an error. Zero now means unlimited
everywhere, matching the docs.

concurrent loads: overlapping Get calls for the same missing key each ran the
loader, added the value and counted its size again. With sized values this drove
currentSize above maxCacheSize and left the lru eviction loop spinning over an
empty cache. Loads are coordinated per key now, so the loader runs once and the
rest wait for its result. The lru eviction loop also stops when the backend is
empty instead of looping forever.

redis namespacing: the cache treated the whole selected database as its own, so
keys could collide with unrelated d... (continued)

417 of 463 new or added lines in 20 files covered. (90.06%)

1 existing line in 1 file now uncovered.

1530 of 1622 relevant lines covered (94.33%)

17848.11 hits per line

Uncovered Changes

Lines Coverage ∆ File
11
90.97
1.23% v2/redis_cache.go
7
90.43
-7.11% scache.go
6
95.16
-4.84% redis_cache.go
4
93.22
-3.14% lru_cache.go
3
93.97
-2.43% expirable_cache.go
3
95.41
-2.66% v2/expirable_cache.go
3
93.86
-2.37% v2/lru_cache.go
2
89.19
eventbus/redis.go
2
93.88
-1.91% url.go
2
89.47
v2/eventbus/redis.go
2
93.94
-1.89% v2/url.go
1
99.44
internal/cache/cache.go

Coverage Regressions

Lines Coverage ∆ File
1
90.97
1.23% v2/redis_cache.go
Jobs
ID Job ID Ran Files Coverage
1 32208387310.1 19 Aug 2026 02:24AM UTC 22
94.33
GitHub Action Run
Source Files on build 32208387310
  • Tree
  • List 22
  • Changed 14
  • Source Changed 0
  • Coverage Changed 14
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 65fbea16 on github
  • Prev Build on master (#19903546292)
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