Skip to content

Missing commands: DUMP/RESTORE, HSTRLEN, EVAL_RO/EVALSHA_RO, FAILOVER, MIGRATE, MODULE #636

Description

@TinDang97

Summary

Nine commands redis-server 8.6.1 answers are -ERR unknown command on Moon. Measured 2026-08-22 on moon 0.8.5+ (fd838ede), --shards 1, by SENDING each one (COMMAND INFO is not authoritative here — see #635):

DUMP <key>                    -ERR unknown command 'DUMP'
RESTORE <key> 0 <payload>     -ERR unknown command 'RESTORE'
HSTRLEN <key> <field>         -ERR unknown command 'HSTRLEN'
EVAL_RO <script> 0            -ERR unknown command 'EVAL_RO'
EVALSHA_RO <sha> 0            -ERR unknown command 'EVALSHA_RO'
FAILOVER ABORT                -ERR unknown command 'FAILOVER'
MIGRATE host port key 0 100   -ERR unknown command 'MIGRATE'
MODULE LIST                   -ERR unknown command 'MODULE'
DEBUG DIGEST                  -ERR DEBUG subcommand 'DIGEST' not supported

Suggested priority

DUMP / RESTORE first, as a pair. They are the serialisation surface: redis-cli --bigkeys-style tooling, redis-dump, key-level backup/copy scripts and every "move this key to that server" workflow use them, and neither half is useful alone. They also need an RDB-object serialiser that Moon already has most of, and a version+CRC footer clients verify.

HSTRLEN next — trivially cheap (HGET length without the transfer), and it is the one on this list a normal application (not tooling) is likely to call.

EVAL_RO / EVALSHA_RO next. Moon already routes scripts by key (#516) and already carries a ScriptAcl; the _RO forms are the same path with writes refused. They matter for read-replica routing: a client that wants to send a script to a replica has no other way to say "this script does not write". Note they are also absent from Moon's registry entirely, so COMMAND INFO EVAL_RO returns nil rather than an entry — the refuse_if_keyspace MONITOR table already has a comment anticipating them.

FAILOVER, MIGRATE, MODULE are cluster/extension surface and should follow whoever owns those areas; MODULE LIST returning *0 is worth doing on its own, since clients call it on connect to feature-detect and an error reads as a broken server.

DEBUG DIGEST is how consistency harnesses compare two datasets in one round trip; nice to have for the crash-matrix suites, not user-facing.

Also seen, deliberately excluded

Redis 8.x additions DELEX, HSETEX, MSETEX are in the same diff. They are new API surface rather than long-standing gaps and want their own decision about whether Moon tracks 8.x additions at all.

LATENCY (all subcommands), CLIENT TRACKINGINFO and FUNCTION STATS / FUNCTION DUMP are already #632.

How this surfaced

The COMMAND LIST diff in #635, taken while fixing the scripts/test-consistency.sh abort (#634).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions