SSCAN, HSCAN, ZSCAN don't finish when an empty-string member is returned at the end of a page

Open
#3,758 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@ggyuchive is already working on this.

Since Nov 5, 2026.

  • #3759 by @ggyuchive — open

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
77/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
cpp, redis
Domain
backend, database

Research direction

Start at the SSCAN, HSCAN, and ZSCAN implementations and their cursor pagination tests; reproduce the issue with the provided SADD and repeated SSCAN commands using COUNT 1. Trace how an empty member is handled at the end of a page and how the cursor advances. Done when all three commands finish scanning and return the empty-string member without repeating the same page.

Written by the indexing model from the issue text.

Description

bug
Search before asking
  • I had searched in the issues and found no similar issues.
Version

Kvrocks unstable at commit baa1da67b3

Minimal reproduce step
SADD s "" 10
SSCAN s 0 COUNT 1
SSCAN s <cursor from the previous reply> COUNT 1
... repeat with each returned cursor
What did you expect to see?
> SSCAN s 0 COUNT 1
1) "0"
2) 1) ""
   2) "10"
What did you see instead?
> SSCAN s 0 COUNT 1
1) "8038996045349715968"
2) 1) ""
> SSCAN s 8038996045349715968 COUNT 1
1) "8038996045349715969"
2) 1) ""
> SSCAN s 8038996045349715969 COUNT 1
1) "8038996045349715970"
2) 1) ""
(the same page forever)
Anything Else?

No response

Are you willing to submit a PR?
  • I'm willing to submit a PR!
Dominant language
C++
Stars
4.5k
Forks
686
Avg merge
2d 13h
Merged PRs (30d)
40

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

  • Ships a Dockerfile or Docker Compose file
  • No pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/kvrocks

All issues in apache/kvrocks

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.