2.10.0
Important Notice
This new release introduces significant features, improvements, and fixes.
Dependency Updates: RocksDB version bumps from 8.11.4 to 9.6.1.
Highlights
The new data structure HyperLogLog and its commands are supported now, users can use PF*
commands in Kvrocks. Thanks to contributors: @mapleFU @tutububug.
All stream group commands are supported in this release which makes Kvrocks totally compatible with Redis stream.
We allow to enhance the transaction consistency by introducing the db context. It will always use the same snapshot in the transaction while the configuration txn_context_enabled
is enabled. Thanks to contributor: @PokIsemaine
Kvrocks Search commands and HNSW index are supported in Kvrocks, but we haven't released them because they're not ready for production at the moment.
New Features
- feat(config): add compaction-checker-cron to extend original compaction-checker-range by @PragmaTwice in #2383
- feat(search): Add HNSW encoding index & insertion/deletion algorithm by @Beihao-Zhou in #2368
- feat(cluster): support migrate slot range by @PokIsemaine in #2389
- feat(config): change redis-cursor-compatible default value to yes by @jihuayu in #2429
- feat(json): add support of JSON.RESP command by @jackyyyyyssss in #2390
- feat(search): support query parameters in SQL and RediSearch query by @PragmaTwice in #2443
- feat(search): Hnsw Vector Search Plan Operator & Executor by @Beihao-Zhou in #2434
- feat(config): allow to change the max length of the bulk string by @git-hulk in #2444
- feat(config): implement integer config option with the unit by @PragmaTwice in #2448
- feat(hyperloglog): add support of the Hyperloglog data structure by @tutububug in #2142
- feat(search): implement vector query for sql/redisearch parser & transformer by @Beihao-Zhou in #2450
- feat(hyperloglog): Add support of PFMERGE command by @mapleFU in #2457
- feat(search): add support of HNSW vector fields for FT.CREATE by @Beihao-Zhou in #2477
- feat(command): Implement the new command POLLUPDATES for polling updates by sequence by @git-hulk in #2472
- feat(conn): add arguments for unknown command message by @PragmaTwice in #2483
- feat(search): allow to omit
ON HASH|JSON
in FT.CREATE by @PragmaTwice in #2484 - feat(script): Support script flags of Eval script and Function by @PokIsemaine in #2446
- feat: Add slow flags for commands with heavy disk I/O by @jonathanc-n in #2494
- refactor: Improve consistency and isolation semantics by adding Context parameter to DB API by @PokIsemaine in #2332
- feat(config): add
txn_context_enabled
to allow to enable the transaction feature by @PokIsemaine in #2506 - feat: support limit WriteBatch size by @AntiTopQuark in #2508
- feat: Bitmap type DUMP/RESTORE command support by @poipoiPIO in #2535
Bug Fixes
- fix(stream): NOGROUP/BUSYGROUP error message should return without 'ERR' prefix by @git-hulk in #2397
- fix: Add timeouts to go-redis client and ping on client creation by @torwig in #2404
- fix(search): misidentify DESC token in SQL parser by @PragmaTwice in #2439
- fix: monitor dumps 0xffffff prefix for signed char by @PragmaTwice in #2482
- fix(replication): potential deadlock when switching master frequently by @git-hulk in #2516
- fix(namespace): didn't reload namespaces from DB after the full sync by @git-hulk in #2527
- fix(replication): didn't resume the db status after restarting full sync by @git-hulk in #2549
- fix(rdb): incorrect type conversion during RDB loads the int8 encoding by @fstd2 in #2547
- fix: add more check in cluster node parsing by @jonathanc-n in #2538
- fix(test): use fixed seed to improve reproducibility. by @LindaSummer in #2557
- fix(config): wrong rocksdb config name max_sub_compactions by @ChrisZMF in #2499
Code Improvements
- refactor: rename variable names for clarity in LCS method by @shoothzj in #2392
- feat: add
iter->status()
check for loop iterators by @LindaSummer in #2395 - perf(conn): skip index matching when index map is empty by @PragmaTwice in #2405
- chore(resp): extract RESP functions from Connection by @PragmaTwice in #2406
- refactor(stream): change the encoding of stream consumer group by @Yangsx-1 in #2384
- chore: fix compiler warning in cluster and HNSW indexing by @jjz921024 in #2436
- feat(stream): add support of XPENDING command by @Yangsx-1 in #2387
- chore(hyperloglog): add go test cases and minor optimizations/bugfixes by @mapleFU in #2463
- feat(search): Hnsw Vector Search Optimizaton Pass by @Beihao-Zhou in #2466
- feat(command): add category enum for every command by @PragmaTwice in #2479
- chore: use
StringJoin
inEnumField::Set
by @PragmaTwice in #2485 - chore: improve the style and document for SlotMigration by @mapleFU in #2465
- fix(test): remove meaningless
list-max-ziplist-size
by @PokIsemaine in #2517 - fix(typo):
filed -> field
by @AntiTopQuark in #2519 - test: add go test cases for
txn-context-enabled
config by @PokIsemaine in #2530 - chore(tests): add basic tests for the stream consumer group by @jonathanc-n in #2533
- chore(tests): enhance the namespace replication to prevent flaky test by @git-hulk in #2540
- chore(tests): refactor and enhance test cases to prevent flaky test failure by @git-hulk in #2544
Build & CI Changes
- ci: Bump build-push-action to v6 by @aleksraiden in #2367
- chore: protect release branches in .asf.yaml by @PragmaTwice in #2385
- fix(.asf.yaml): branch protection cannot be created by @PragmaTwice in #2386
- ci: use official typos github action by @shoothzj in #2388
- chore(ci): drop CentOS7 in CI since it's EOL now by @git-hulk in #2393
- chore: Bump fmtlib to 11.0.0. by @aleksraiden in #2391
- chore: Bump fmtlib to 11.0.1 by @aleksraiden in #2394
- chore: Bump rocksdb to v9.3.1 by @aleksraiden in #2380
- chore: Bump oneTBB to 2021.13.0 by @aleksraiden in #2375
- chore(.asf.yaml): add release branch 2.9 to protected branches by @PragmaTwice in #2396
- chore(test): bump dependencies of go test by @aleksraiden in #2400
- chore(test): bump dependencies of go-redis by @aleksraiden in #2407
- chore: bump Rocksdb to v9.4.0 by @aleksraiden in #2408
- ci: Update MacOS runner to macos13 by @aleksraiden in #2324
- ci: update runner os from ubuntu 20 to 22 by @PragmaTwice in #2409
- chore(x.py): improve style of commit message for release by @PragmaTwice in #2410
- chore(x.py): revert gotest timeout to 1800sec by @aleksraiden in #2413
- chore: bump googletest to v1.15.0 by @aleksraiden in #2430
- chore: bump cpptrace to v0.6.3 by @aleksraiden in #2412
- chore: bump fmtlib to v11.0.2 by @aleksraiden in #2440
- chore: bump lz4 to v1.10.0 by @aleksraiden in #2441
- feat(ci): integrate Rocky Linux environment into the CI workflow by @SpiffyEight77 in #2451
- build(cmake): update compiler version requirement by @PragmaTwice in #2455
- chore: bump googletest to v1.15.2 by @aleksraiden in #2460
- chore(storage): Remove speedb due to lack of active by @git-hulk in #2476
- feat: use non-root user in Docker image by @kinoute in #2488
- chore: Bump cpptrace to v0.7.0 by @aleksraiden in #2501
- chore: Bump rocksdb to v9.5.2 by @aleksraiden in #2502
- chore(dockerfile): add binutils for addr2line in dockerfile by @PragmaTwice in #2480
- chore: Enable -Werror=unused-parameter flag by @c8ef in #2507
- ci: add Debian environment to CI workflow by @c8ef in #2510
- chore(tests): add basic test case for the full+partial sync by @git-hulk in #2522
- chore: bump rocksdb to v9.6.1 by @aleksraiden in #2525
- chore: bump cpptrace to v0.7.1 by @aleksraiden in #2536
- chore: bump PEGTL to v3.2.8 by @aleksraiden in #2537
Documentation Changes
- docs: add build debug kvrocks doc by @xiaobiaozhao in #2431
- docs: optimize the building section in README by @xiaobiaozhao in #2447
- fix(configuration): wrong comment line about the pidfile in configuration file by @git-hulk in #2505
New Contributors
- @shoothzj made their first contribution in #2388
- @tutububug made their first contribution in #2142
- @SpiffyEight77 made their first contribution in #2451
- @jonathanc-n made their first contribution in #2494
- @c8ef made their first contribution in #2507
- @poipoiPIO made their first contribution in #2535
- @fstd2 made their first contribution in #2547
Full Changelog: v2.9.0...v2.10.0-rc1