Skip to content

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 09 Sep 10:50
· 29 commits to master since this release

Highlights

  • ACL: a user table with per-command and per-subcommand enforcement, ACL LOG, requirepass / user / acl-pubsub-default in the config file.
  • Slow log: SLOWLOG GET/LEN/RESET with runtime thresholds via CONFIG SET, credentials redacted, PSLOWLOG reads every node's log. Off by default (slowlog-log-slower-than -1); timing costs about 1% of peak throughput when on.
  • Slot migrations and failovers are ridden out: TRYAGAIN is retried whole so multi-key commands stay atomic under atomic slot migration, a READONLY after a failover is resent to the shard's new master, and a script is reloaded on NOSCRIPT after a redirect.
  • Observability: INFO gains # Commandstats (calls per command), # Cluster and total_error_replies; CLIENT LIST reports each connection's last command.
  • Cluster databases (SELECT), shard pubsub, WATCH/UNWATCH on an exclusive connection, SCRIPT and FUNCTION management; the command table is generated from Redis 8.10.1 and Valkey 9.1.2 with key specs.
  • docs/compatibility.md states what the proxy does not carry over from mt-proxy and where its semantics differ from a single Redis.
  • Hot path: every batch in this release was A/B-measured against its base on a 128-master rig; default-mode peak throughput is unchanged within the A/A noise floor.

Changelog

Features

  • b8eec53 feat: PSLOWLOG forwards a SLOWLOG subcommand to every node
  • d69b4dd feat: a proxy-side slow log with SLOWLOG and runtime thresholds
  • 9085cf1 feat: per-command call counts in INFO and the last command in CLIENT LIST
  • a29e806 feat: ride out TRYAGAIN whole and READONLY on a keyless broadcast
  • fae8209 feat: cluster databases
  • 20e559d feat: ride out atomic slot migrations
  • e670fe3 feat: shard pubsub
  • 535b680 feat: WATCH and UNWATCH on an exclusive connection
  • 989c399 feat: command table from Redis 8.10.1 and Valkey 9.1.2
  • 179ca6a feat: ACL user table with per-command enforcement
  • 46f0d04 feat: SCRIPT and FUNCTION management, scripts reloaded on NOSCRIPT
  • d1e9007 feat: command table from COMMAND INFO, numkeys key specs, newer blocking forms

Performance

  • ba5b485 perf: the slow log is opt-in

Bug fixes

  • bb19ea3 fix: answer SLOWLOG on a tracked task behind the hold, parse XREAD once
  • 256fb9d fix: SLOWLOG answers after the session's earlier replies settle, a blocking XREAD stays untimed from the start
  • 71828d2 fix: SLOWLOG RESET clears at its own place in the session's order
  • 0555b4e fix: time every accepted command at its first reply sequence
  • bf814fe fix: the argument-count summary outranks redaction, and one comment less
  • 5470be5 fix: redact every credential argument, name only a real transaction exec, time SELECT
  • 16c8bd1 fix: keep a bounded, redacted argument list per slow-log entry
  • 35ea997 fix: count an error carried by a pubsub confirmation too
  • 685ef0b fix: count error replies where they are written and commands once accepted
  • 7fb3917 fix: track every detached ride-out for teardown
  • 403dfd2 fix: abort a stalled broadcast at teardown, and send a reload's frames as one outbound
  • 4346a29 fix: hold the session behind a broadcast instead of parking its reader, and keep ASKING on a script reload
  • 98b1325 fix: resend a READONLY keyless write to its shard's new master only, and reload a redirected EVALSHA where it landed
  • 8388832 fix: include Redis vector commands in generated table (#14)
  • 4e68ee3 fix: client-info name and user fields are single plain tokens
  • 33a0139 fix: ACL LOG client-info names the session user and the invoking command
  • b49f261 fix: no-auth commands skip ACL rules, ACL LOG carries a full client-info line
  • f4df84e fix: an unknown subcommand needs the whole container, log names are clipped
  • e018b92 fix: ACL rules apply per subcommand, a disabled default user needs a login
  • 7b413d2 fix: a keyless script gets a ring entry, so NOSCRIPT reloads it too
  • 036f986 fix: script bodies are copied, a partial SCRIPT FLUSH reports its loss
  • 18ed02b fix: NOSCRIPT reload only in order, SCRIPT FLUSH forgets at dispatch
  • a09724b fix: keyword key scans start where Redis starts them
  • e5913b0 fix: scripts keep the write flag, MULTI and GETKEYS walk every key spec

Other

  • 4b7b332 chore: crate version 0.1.6
  • ee7656b build: annotate the clipped name

Full Changelog: v0.1.5...v0.1.6