Skip to content

[NEW] Redis-compatibility mode #274

Description

@zuiderkwast

The problem/use-case that the feature addresses

We want to change the word "Redis" in error replies, log entries, HELLO reply, etc. but there is risk of breaking the Redis compatibility if we change them.

This is what we're talking about:

  • Occurrences of "Redis" in error replies #204.

    • "-LOADING Redis is loading the dataset in memory"
    • "-BUSY Redis is busy running a (...)"
    • "-MISCONF Redis is configured to (...)"
  • Occurrences of "Redis" in log entries #207. This config affects only two log messages:

    • "=== REDIS BUG REPORT START: Cut & paste starting from here ==="
    • "=== REDIS BUG REPORT END. Make sure to include from START to END. ==="

    We don't use this config for any other log entries such as

    • "Redis needs to enable the AOF but can't trigger a background AOF rewrite operation. Check the above logs for more info about the error."
    • "Redis forked for debugging eval"
    • "Redis aborting for OUT OF MEMORY. Allocating %zu bytes!"
  • The reply from HELLO #61

    • "server" => "redis", "version" => "...."
  • INFO field (part of The output of INFO server #41)

    • "redis_mode:standalone" (Change to "server_mode" or just "mode")

Description of the feature

Introduce a TEMPORARY "compatibility switch", so if a user has some scripts or clients hard-coded to look for "Redis", the user can enable the redis-compatibility mode.

I say temporary, because the purpose is to let users fix their applications.

❓ What's the time plan? I suggest we add the switch in Valkey 8. In Valkey 9 we remove it, but we make the config have no effect, so we don't crash if the user has the config. In Valkey 10 we remove the config.

❓ What shall be controlled by it? I suggest the things listed above. For all other error replies and log messages we can just make a breaking change. Other suggestions?

❓ Shall it be a compile time switch (ifdef) or runtime (config). I suggest a config. Not all users compile from source.

Alternatives you've considered

We could just do breaking changes. (High risk of problems for users?)

We could just keep Redis in these messages forever. (Safe, but not nice.)

Additional information

It has been discussed but no decision was made yet. We need to make decisions about all " ❓ " above.

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions