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

microlinkhq / keyvhq / 40739756220 / 10
97%
master: 97%

Build:
DEFAULT BRANCH: master
Ran 28 Oct 2026 05:57PM UTC
Files 1
Run time 0s
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

28 Oct 2026 05:52PM UTC coverage: 96.875%. Remained the same
40739756220.10

push

github

web-flow
fix(redis): keep scanning until the cursor returns to 0 (#288)

* test(redis): iterate a namespace whose SCAN pages come back empty

Seeds 1000 keys outside the namespace and 5 inside it, so the default
SCAN COUNT returns empty pages with a non-zero cursor before reaching
the namespace keys. On master the iterator yields 0 of the 5 entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(redis): keep scanning until the cursor returns to 0

The iterator returned as soon as a SCAN page had no keys. Redis only
signals the end of a scan with cursor 0; a page may be empty while
the cursor is still non-zero, which is common when the namespace
matches few keys. The iterator stopped early and yielded a partial
or empty result.

Iterate with a loop that ends on cursor '0' and skips the MGET for
empty pages. The loop also replaces the recursive generator, so a
long scan no longer stacks one delegating generator per page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(redis): escape namespace globs and skip missing scan keys

SCAN MATCH treats * ? [ and \ as globs, so a namespace such as [ab]
never yielded or cleared its own keys, and a* cleared neighboring
namespaces. Escape those characters in the shared match pattern.

MGET returns null when a key disappears between SCAN and MGET. Yielding
that null makes Keyv throw while reading expires. Skip those keys.

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(redis): guard the empty SCAN page before MGET

The empty-page branch wrapped the fetch and yield. A continue keeps
that path at the top of the loop.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

97 of 104 branches covered (93.27%)

Branch coverage included in aggregate %.

182 of 184 relevant lines covered (98.91%)

80.67 hits per line

Source Files on job @keyvhq/core - 40739756220.10
  • Tree
  • List 1
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 40739756220
  • bfb2cbdc on github
  • Prev Job for on master (#40682665258.5)
  • Next Job for on master (#40743697818.1)
  • Delete
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