`GEOSEARCH` / `GEORADIUS` with a negative radius hangs

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

Maintainers usually reply within 1 day

@ggyuchive is already working on this.

Since Oct 30, 2026.

  • #3737 by @ggyuchive — open

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
cpp
Domain
databases

Research direction

Start at the reported call path from redis::CommandGeoRadius::Execute through redis::Geo::Radius and SearchStore to GeoHashHelper::GetAreasByShapeWGS84 in geohash.cc:362 and :376. Run the reproduction for both GEOSEARCH and GEORADIUS; done means each negative radius returns an error instead of hanging, and the server still answers PING.

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 71f3810d1b (71f3810d1b8cfd4a8ca867b0fca6659e3d863ad2).

Minimal reproduce step

Start an empty server and run:

GEOADD g 1 1 m
GEOSEARCH g FROMLONLAT 1 1 BYRADIUS -1 km
What did you expect to see?
> GEOADD g 1 1 m
(integer) 1
> GEOSEARCH g FROMLONLAT 1 1 BYRADIUS -1 km
(error) ERR radius cannot be negative
> GEORADIUS g 1 1 -1 km
(error) ERR radius cannot be negative
What did you see instead?
> GEOADD g 1 1 m
(integer) 1
> GEOSEARCH g FROMLONLAT 1 1 BYRADIUS -1 km
(no reply)
Anything Else?

The command never returns, and PING on a new connection also stopped answering. GEORADIUS g 1 1 -1 km behaves the same.

redis::CommandGeoRadius::Execute
  redis::Geo::Radius
    redis::Geo::SearchStore
      GeoHashHelper::GetAreasByShapeWGS84(GeoShape&)   geohash.cc:362
        GeoHashHelper::GetAreasByShapeWGS84(GeoShape&) geohash.cc:376
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 19h
Merged PRs (30d)
37

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.