Skip to content

2.9.0

Compare
Choose a tag to compare
@PragmaTwice PragmaTwice released this 09 Jul 10:08
· 159 commits to unstable since this release

Important Notice

This new release introduces significant features, improvements, and fixes.

Numerous new commands are now supported, such as DUMP, SORT, LCS, COPY, ASKING, READONLY, and READWRITE. These additions enhance Kvrocks' capabilities by improving data migration and cluster features. A big thank you to all contributors for their valuable input to Kvrocks.

The default value of CMake option ENABLE_NEW_ENCODING is set to ON, which means the new data type encoding (specified here) is enabled by default while all old data is still compatible. (Note: After you upgrade to Kvrocks 2.9.0 and write new data, if you roll back Kvrocks to 2.3.0 or earlier versions, these newly-written data will not be available.)

Async IO in RocksDB is enabled by default since this release which might bring the performance benefit for the scan behavior if the io uring is supported.

In addition, the config option compaction-checker-range is still available but is marked as deprecated. We recommend using compaction-checker-cron instead. Also, the cron syntax in the config file has been extended. For example, you can now use cron expressions like * */2 1,3-6,8 * *.

Kvrocks Search (compatible with both SQL and RediSearch queries) and stream groups are two experimental new features that are already available in the unstable branch, but they are not enabled in this release.

RocksDB is still in version 8.11 (8.11.4) for this version. However, in the next feature release, we plan to bump RocksDB to version 9.

New Features

  1. Add the support of the LCS command by @JoverZhang in #2116
  2. Add compression level option by @Beihao-Zhou in #2171
  3. Add support of READONLY and READWRITE by @LiuYuHui in #2173
  4. Support value setting for nonexistent paths in JSON.SET by @PragmaTwice in #2178
  5. Add BIT support to BITPOS by @sheharyaar in #2170
  6. Add support of the command MOVEX by @Chiro11 in #2225
  7. Add support of the command DUMP by @AntiTopQuark in #2227
  8. Add support of the command JSON.MSET by @zjregee in #2228
  9. Add support of the SORT command by @PokIsemaine in #2262
  10. Support ASKING command by @jjz921024 in #2273
  11. Add support of the command JSON.DEBUG MEMORY by @jackyyyyyssss in #2323
  12. Enable the rocksdb async io by default by @xiaobiaozhao #2308

Bug Fixes

  1. Fix glog may buffer the stdout's output by @i18n-now in #2131
  2. Fix duplicate flag for building rocksdb by @aleksraiden in #2139
  3. Fix build warnings: local variable 's' will be copied despite being returned by name by @aleksraiden in #2148
  4. Fix missing fields in HELLO command response by @git-hulk in #2150
  5. Fix XREADGROUP command didn't fetch the latest metadata after creating a consumer by @Yangsx-1 in #2153
  6. Fix the pidfile and backup_dir will be rewritten even though they weren't modified by @git-hulk in #2186
  7. Fix wrongly append the ERR prefix in no script error by @lloydzhou in #2201
  8. Fix should forbid importing the slot which belongs to itself in cluster mode by @git-hulk in #2209
  9. Fix GetOptions in C++17 build by @mapleFU in #2213
  10. Fix wrongly try to rewrite the namespace in the cluster mode by @git-hulk in #2221
  11. Fix should use the minimum compatible RDB version when dumping the payload by @git-hulk in #2252
  12. Fix the replica should remove the master link when receiving the CLUSTER RESET command by @git-hulk in #2259
  13. Fix unused-variable error for lower gcc version due to structure bindings by @13015517713 in #2265
  14. Fix the error logging when the importer is not in a started state by @git-hulk in #2280
  15. Fix JSON.[STRLEN|OBJLEN] response inconsistently with Redis when the path doesn't exist by @jackyyyyyssss in #2336
  16. Fix minica version in CI workflow to prevent TLS test failure by @PragmaTwice in #2307
  17. Fix compiler warnings in KQIR and RDB by @raffertyyu in #2303
  18. Fix plan operator child iterator in KQIR by @PragmaTwice in #2282
  19. Fix JSON.ARRTRIM key no exists by @jackyyyyyssss in #2374
  20. Fix config: avoid rewriting the config file if it's unnecessary by @git-hulk in #2347
  21. Fix stream: make consumer decrement pending number when message is acknowledged by @LindaSummer in #2352

Code Improvements

  1. Extract common/port.h and optimize dbstats by @mapleFU in #2145
  2. Add macos arm64 runner to actions workflow by @PragmaTwice in #2155
  3. Optimize numeric comparison via interval analysis in KQIR by @PragmaTwice in #2257
  4. Refactor TTL processing in string type by @PragmaTwice in #2250
  5. Improve code style in cluster by @jihuayu in #2272
  6. Refactor Column Family Handling by @mapleFU in #2296
  7. Improve logging message for retryable background IO errors by @VasuDevrani in #2317
  8. Optimize the implementation of IntervalSet intersection by @13015517713 in #2300
  9. Improve RESP handling code in replication by @PragmaTwice in #2334
  10. Refactor cron: add CronPattern and implement more cron syntax by @PragmaTwice in #2377

Build & CI Changes

  1. Uniform image update/upgrade in Dockerfile by @aleksraiden in #2138
  2. Try to workaround the broken ubuntu image by @git-hulk in #2161
  3. Revert broken ubuntu image temporary fix by @enjoy-binbin in #2189
  4. Bump zstd to v1.5.6 by @aleksraiden in #2204
  5. Add semantics checker for KQIR by @PragmaTwice in #2207
  6. Add a simple pass manager for KQIR by @PragmaTwice in #2226
  7. Bump Snappy to 1.2.0 by @aleksraiden in #2224
  8. (ci) Bump apache/skywalking-eyes to 0.6.0 by @aleksraiden in #2241
  9. Enable CI for kvrocks2redis by @Zakelly in #2175
  10. ci(pr-lint): force the PR title to follow the conventional commits by @PragmaTwice in #2342
  11. Upload build artifact for the sonar scan by @git-hulk in #2321
  12. Fix missing temp dir while running sonar scan by @git-hulk in #2322
  13. Bump Snappy v1.2.1 by @aleksraiden in #2325
  14. Set ENABLE_NEW_ENCODING=FALSE in CI workflow by @PragmaTwice in #2333
  15. (ci) Remove 'ps aux' command from kvrocks2redis test by @aleksraiden in #2337
  16. chore: bump rocksdb to v9.2.1 by @aleksraiden in #2327
  17. chore: bump jsoncons to v176.0 by @aleksraiden in #2328
  18. test: fix listpack decoding in kvrocks2redis integration tests by @PragmaTwice in #2345
  19. build: set ENABLE_NEW_ENCODING=FALSE when building kvrocks2redis by @PragmaTwice in #2350
  20. chore: bump rocksdb to v9.2.2 by @aleksraiden in #2351

Documentation Changes

  1. Add more documents in KQIR by @PragmaTwice in #2196
  2. Fix invalid url in docs by @mapleFU in #2192
  3. Update "Type Conversion" doc by @PragmaTwice in #2235
  4. Fix doc typo by @Yangsx-1 in #2240
  5. Add more docs for the dynamic column family by @mapleFU in #2298