github apache/kvrocks v2.17.0
2.17.0

5 hours ago

Highlights: This release adds JSON output for INFO, the TDIGEST.CDF command, and configurable client output-buffer limits. It also improves Stream trimming and HNSW random-number generation, fixes replication and command compatibility issues, and strengthens command permissions, Lua reply handling, and RDB loading.

Dependencies were refreshed, including RocksDB v11.8.1, jsoncons v1.9.0, libevent 2.1.13-stable, fmt v12.2.0, and GoogleTest v1.18.0.

Hash Field Expiration (HFE) commands and configuration remain disabled in 2.17.0, while the internal data structures and metadata are retained. Keyspace Notifications and CuckooFilter are also excluded from this release and should not be treated as available functionality.

Compatibility Notes

  • DEBUG, FLUSHMEMTABLE, FLUSHBLOCKCACHE, and _db_name now require admin permission. Clients authenticated with namespace tokens can no longer run these commands. See #3570.
  • Non-admin CLIENT LIST, CLIENT INFO, and CLIENT KILL operations are restricted to the caller's namespace. See #3536.
  • Cluster slot migration now uses only raw-key-value. The redis-command migration path and fallback have been removed; the destination must support APPLYBATCH. The migrate-type, migrate-speed, and migrate-pipeline-size settings are deprecated. Use migrate-batch-rate-limit-mb and migrate-batch-size-kb to control migration throughput and batch size. See #3544.
  • client-output-buffer-limit is disabled by default and applies to the normal and pubsub client classes. The slave class is accepted for compatibility but has no effect on replication connections. See #3560.

New Features

  • feat(info): support FORMAT (TXT | JSON) for the INFO command by @nhancdt2602 in #3549
  • feat(server): support the client-output-buffer-limit configuration by @git-hulk in #3560
  • feat(tdigest): implement tdigest.cdf command by @LindaSummer in #3551

Bug Fixes

  • fix(cluster): release forbidden slot range on CLUSTER RESET by @git-hulk in #3545
  • fix(replication): prevent full-sync checkpoint race with cron purge by @advisedy in #3559
  • fix(json): use bytes sink for CBOR encoding by @XYenon in #3580
  • fix(stream): decrement pending_number when XAUTOCLAIM removes deleted PEL entries by @wengsht in #3578
  • fix(comptaction): use int64_t for parsing total_keys and deleted_keys by @DanFaudemer in #3599
  • fix(set): return scalar for SRANDMEMBER without count by @raghav2005 in #3601
  • fix(server): add O_TRUNC when creating PID file to avoid stale content by @weim0000 in #3598

Security & Hardening

  • fix(server): scope CLIENT LIST/INFO/KILL to caller's namespace by @git-hulk in #3536
  • fix(scripting): guard against stack overflow on deeply nested Lua reply by @git-hulk in #3547
  • fix(rdb): reject over-large declared lengths when loading RDB payloads by @git-hulk in #3550
  • fix(command): require admin permission for privileged commands by @git-hulk in #3570

Improvements

  • refactor(cluster): remove the redis-command migration type by @git-hulk in #3544
  • perf(search): share a thread-local RNG for HNSW and drop seed (#2398) by @advisedy in #3562
  • perf(stream): trim with a single DeleteRange instead of per-entry Delete by @bocharov in #3592

Build & CI

Dependency Updates

Features Excluded from 2.17.0

The following upstream work is present in the development history but its user-facing functionality is disabled or removed in this release:

  • HFE commands, including HSETEX and HGETEX, and HFE configuration are disabled. Internal data structures and metadata are retained. Related work by @PragmaTwice: #3554.
  • Keyspace Notifications are excluded. Related work by @Aetherance: #3541.
  • CuckooFilter commands are disabled. Related work by @nagisa-kunhah: #3481.
  • chore(release): exclude incomplete 2.17.0 features by @git-hulk in c4802b0

Chores & Maintenance

New Contributors

Full Changelog: v2.16.0...v2.17.0

Don't miss a new kvrocks release

NewReleases is sending notifications on new releases.