HELLO unimplemented — breaks RESP3-capable clients (e.g. redis-py >= 8.0) #41
Labels
No labels
prio_critical
prio_low
type_bug
type_contact
type_issue
type_lead
type_question
type_story
type_task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lhumina_code/hero_db#41
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
HELLO,HELLO 2, andHELLO 3all returnERR unknown command 'HELLO'. Clients that negotiate the protocol viaHELLOon connect fail.redis-py >= 8.0raises on reconnect: the first connection silently falls back to RESP2, but pool reconnects re-issue HELLO and error out.Reproduction
Running a
redis-py 8.0probe against hero_db required monkeypatching the HELLO handshake to a RESP2 fallback just to keep the connection alive.Root cause
There is no
HELLOarm in the command dispatch (crates/hero_db/src/server.rs, thematch cmd.as_str()block); it falls through to theunknown commanddefault atserver.rs:1029.Suggested fix
Implement
HELLO [protover]returning the server map in RESP2. Per the RESP spec, rejectprotover 3withNOPROTOwhile RESP3 is unsupported, rather than erroring on the command itself.Filed from a Redis-compatibility audit (hero_db v0.6.0 @ main
aacaad1). Every finding was cross-validated: the same probe passes on stockredis-server 7.0.15and fails on hero_db, using the Apache Kvrocksgocasesuite (Go) and aredis-py 8.0probe (Python). Root causes verified against the source.