Releases: apache/kvrocks
2.11.1
This release is a patch release which includes several important bug fixes (including the security fix for CVE-2025-25069).
Users of old versions are strongly encouraged to upgrade to this new version.
Bug Fixes:
- fix(tls): remove SSL_sendfile path to avoid errors in replication fullsync by @PragmaTwice in #2757
- fix(conn): detect and drop HTTP requests in connection by @PragmaTwice in #2765
Misc:
- ci: refactor nightly image workflow and utilize arm64 runners by @PragmaTwice in #2751
- ci: release nightly images for version tags by @PragmaTwice in #2769
Full Changelog: v2.11.0...v2.11.1-rc1
2.11.0
Highlights
Note that RocksDB has been upgraded from v9.3.1 to v9.10.0 in this version.
We are excited to announce the release of Kvrocks Search in this version, which gives Kvrocks the ability of secondary indexing and structured querying. You can find detailed information on the website. Please note that this feature is still experimental, and you can provide feedback through GitHub Issues if you encounter any problems.
New Features
- feat: support histograms for command latency statistics by @rabunkosar-dd in #2721
- feat(search): support the FT.TAGVALS command by @jonathanc-n in #2564
- feat(worker): Allow passing a socket FD to dup and listen on by @nathanlo-hrt in #2598
- feat(config): support retrieving configuration fields using glob patterns by @sryanyuan in #2592
- feat(config): add
rocksdb.wal_compression
to allow enable wal compression by @paragor in #2607 - feat(config): add
rocksdb.compression_start_level
to allow configure levels without compression by @paragor in #2605 - feat(keys, scan): Support arbitrary glob patterns by @nathanlo-hrt in #2608
- feat(cluster): add support of the JSON type in cluster migration by @git-hulk in #2654
- feat(config): make rocksdb.dump_malloc_stats configurable by @nathanlo-hrt in #2658
- feat(cmd, config): support REPLICAOF command and replicaof config option by @PragmaTwice in #2678
- feat: skip block cache deallocation to make shutdown fast by @wanghenshui in #2683
- feat(config): add the
partition_filters
option to disable the partitioned filters by @fukua95 in #2688
Improvements
- feat(command): add slow flag to more commands by @PragmaTwice in #2570
- feat(json): change default max_nesting_depth to 1024 by @PragmaTwice in #2572
- feat(search): add field options and definition part to FT.INFO by @PragmaTwice in #2571
- feat(conn): move time-consuming ops out of ExecuteCommand for context by @PragmaTwice in #2611
- feat(config): Minor update comment for compression_start_level error code by @mapleFU in #2615
- feat(cmd): avoid to use CommandAttributes::flags directly by @PragmaTwice in #2619
- feat(cmd): make key range fields private in CommandAttributes by @PragmaTwice in #2621
- feat(resp): optimize simple string "OK" construction by @RiversJin in #2627
- feat(status): support rocksdb::Status fowarding in GET_OR_RET by @PragmaTwice in #2630
- feat(cmd): add blocking flag and remove useless flags by @PragmaTwice in #2637
- feat(search): add mutex to HNSW index updating by @PragmaTwice in #2649
- feat(search): print properties for vector field in FT.INFO by @PragmaTwice in #2655
- feat(cmd): all blocking commands should be no-script by @PragmaTwice in #2666
- feat(cmd): add the auth flag for authentication checking by @PragmaTwice in #2669
- feat(conn): avoid to check the command name directly by @PragmaTwice in #2668
- feat(cmd): add more information to shutdown log by @PragmaTwice in #2672
- feat(conn): allow CONFIG in stale-data replica by @PragmaTwice in #2677
- feat(search): add TAGGED as an alternative syntax to HASTAG by @PragmaTwice in #2692
- feat(search): trim whitespaces in tag values by @PragmaTwice in #2702
- refactor: promote the
engine::Context
in theExecute
by @PokIsemaine in #2586 - refactor: hoist key mutexes to ExecuteCommands by @PokIsemaine in #2620
- refactor: initialize google logger after parsing options by @aleksraiden in #2664
- refactor: reduce memory copying during incremental synchronization by @RiversJin in #2689
- refactor: move rdb related code to
storage/rdb
folder by @LindaSummer in #2595 - perf(cluster): add upper bound for scan during migration by @RiversJin in #2724
Bug Fixes
- fix: Better checking for prefix matches by @nathanlo-hrt in #2599
- fix(command): wrong key range in commands: DISK/MEMORY/DUMP by @git-hulk in #2623
- fix(cmd): add exclusive flag to FLUSHDB/FLUSHALL by @PragmaTwice in #2624
- fix(script): avoid SetCurrentConnection on read-only scripting by @PragmaTwice in #2640
- fix(cluster): should remove the master if it's not node in the cluster by @git-hulk in #2643
- fix(bugfix): for txn_write_batch creation by @mapleFU in #2648
- fix(log): fix rocksdb stall condition string output by @mapleFU in #2651
- fix(cmd): args should be parsed before retrieving keys in COMMAND GETKEYS by @PragmaTwice in #2661
- fix(stream): add
KeyRangeGen
forXRead
andXReadGroup
by @LindaSummer in #2657 - fix(cmd): always print ok log when get full data file info failed by @sryanyuan in #2663
- fix(replication): slave blocks until keepalive timer is reached when master is gone without fin/rst notification by @sryanyuan in #2662
- fix(string): reset the value of expired key for incrby cmd by @FishYoung in #2667
- fix(string): reset the value of expired key for SETRANGE cmd by @weim0000 in #2686
- fix(cluster): should stop the migration if it's changed to the slave role by @RiversJin in #2716
Misc
- chore: bump jsoncons to v0.177.0 by @aleksraiden in #2493
- chore(search): update README to add some references for KQIR by @PragmaTwice in #2581
- chore: Bump cpptrace to v0.7.2 by @aleksraiden in #2585
- chore: add branch 2.10 as a protected branch in .asf.yaml by @PragmaTwice in #2591
- chore: Bump rocksdb to v9.7.2 by @aleksraiden in #2600
- chore: bump oneTBB to v2022.0.0 by @aleksraiden in #2632
- chore: bump jsoncons to v0.178.0 by @aleksraiden in #2631
- chore: Add devcontainer config for Kvrocks by @what-is-me in #2634
- chore: bump rocksdb to v9.7.4 by @aleksraiden in #2639
- chore(cmd): add comments for command flags by @PragmaTwice in #2641
- chore(search): improve code structure of IndexManager by @PragmaTwice in #2650
- chore(enhancement): rename is_txn_mode to txn_context_enabled by @mapleFU in #2644
- chore: bump cpptrace to v0.7.3 by @aleksraiden in #2670
- chore: bump glog to 0.7.1 by @aleksraiden in #2106
- chore: bump rocksdb to v9.8.4 by @aleksraiden in #2687
- chore: add move assign operator for MultiLockGuard by @PragmaTwice in #2693
- chore: bump rocksdb to v9.9.3 by @aleksraiden in #2694
- chore: bump cpptrace to v0.7.4 by @aleksraiden in #2696
- chore: bump fmtlib to 11.1.0 by @aleksraiden in #2698
- chore: bump fmtlib to v11.1.1 by @aleksraiden in #2699
- chore: bump xxhash to v0.8.3 by @aleksraiden in #2700
- chore: bump jsoncons to v1.0.0 by @aleksraiden in #2704
- chore: bump rocksdb to v9.10.0 by @aleksraiden in #2705
- chore: bump cpptrace to v0.7.5 by @aleksraiden in #2709
- chore(tests): use built-in min and max by @fukua95 in #2718
- chore: bump fmtlib to 11.1.2 by @aleksraiden in #2720
- chore: bump jsoncons to v1.1.0 by @aleksraiden in #2719
- docs: Add Kvrocks' Zulip URL to README by @PragmaTwice in #2588
- docs: remove the Slack invitation link from README.md by @git-hulk in #2593
- test(integration): add integration t...
2.10.1
This release addresses some critical bugs found in 2.10.0.
Bug Fixes
- fix(stream): change XREADGROUP response for empty read response #2569 by @jonathanc-n
- fix(stream): Fix XPENDING serialization issue #2566 by @nathanlo-hrt
- fix(stream): fix
XINFO
group metadata key overlapping. #2576 by @LindaSummer - fix: some rocksdb properties are counted multiple times #2589 by @sryanyuan
- fix: should remove the db lock from the context to prevent blocking user requests #2597 by @git-hulk
- fix(json): JSON.MSET may update on the old json value #2579 by @poipoiPIO
- fix(rocksdb): downgrade RocksDB to v9.3.1 due to a blobdb issue #2614 by @git-hulk
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 use...
2.9.0
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
- Add the support of the LCS command by @JoverZhang in #2116
- Add compression level option by @Beihao-Zhou in #2171
- Add support of READONLY and READWRITE by @LiuYuHui in #2173
- Support value setting for nonexistent paths in JSON.SET by @PragmaTwice in #2178
- Add BIT support to BITPOS by @sheharyaar in #2170
- Add support of the command MOVEX by @Chiro11 in #2225
- Add support of the command DUMP by @AntiTopQuark in #2227
- Add support of the command JSON.MSET by @zjregee in #2228
- Add support of the SORT command by @PokIsemaine in #2262
- Support ASKING command by @jjz921024 in #2273
- Add support of the command JSON.DEBUG MEMORY by @jackyyyyyssss in #2323
- Enable the rocksdb async io by default by @xiaobiaozhao #2308
Bug Fixes
- Fix glog may buffer the stdout's output by @i18n-now in #2131
- Fix duplicate flag for building rocksdb by @aleksraiden in #2139
- Fix build warnings: local variable 's' will be copied despite being returned by name by @aleksraiden in #2148
- Fix missing fields in HELLO command response by @git-hulk in #2150
- Fix XREADGROUP command didn't fetch the latest metadata after creating a consumer by @Yangsx-1 in #2153
- Fix the pidfile and backup_dir will be rewritten even though they weren't modified by @git-hulk in #2186
- Fix wrongly append the ERR prefix in no script error by @lloydzhou in #2201
- Fix should forbid importing the slot which belongs to itself in cluster mode by @git-hulk in #2209
- Fix GetOptions in C++17 build by @mapleFU in #2213
- Fix wrongly try to rewrite the namespace in the cluster mode by @git-hulk in #2221
- Fix should use the minimum compatible RDB version when dumping the payload by @git-hulk in #2252
- Fix the replica should remove the master link when receiving the CLUSTER RESET command by @git-hulk in #2259
- Fix unused-variable error for lower gcc version due to structure bindings by @13015517713 in #2265
- Fix the error logging when the importer is not in a started state by @git-hulk in #2280
- Fix JSON.[STRLEN|OBJLEN] response inconsistently with Redis when the path doesn't exist by @jackyyyyyssss in #2336
- Fix minica version in CI workflow to prevent TLS test failure by @PragmaTwice in #2307
- Fix compiler warnings in KQIR and RDB by @raffertyyu in #2303
- Fix plan operator child iterator in KQIR by @PragmaTwice in #2282
- Fix JSON.ARRTRIM key no exists by @jackyyyyyssss in #2374
- Fix config: avoid rewriting the config file if it's unnecessary by @git-hulk in #2347
- Fix stream: make consumer decrement pending number when message is acknowledged by @LindaSummer in #2352
Code Improvements
- Extract common/port.h and optimize dbstats by @mapleFU in #2145
- Add macos arm64 runner to actions workflow by @PragmaTwice in #2155
- Optimize numeric comparison via interval analysis in KQIR by @PragmaTwice in #2257
- Refactor TTL processing in string type by @PragmaTwice in #2250
- Improve code style in cluster by @jihuayu in #2272
- Refactor Column Family Handling by @mapleFU in #2296
- Improve logging message for retryable background IO errors by @VasuDevrani in #2317
- Optimize the implementation of IntervalSet intersection by @13015517713 in #2300
- Improve RESP handling code in replication by @PragmaTwice in #2334
- Refactor cron: add CronPattern and implement more cron syntax by @PragmaTwice in #2377
Build & CI Changes
- Uniform image update/upgrade in Dockerfile by @aleksraiden in #2138
- Try to workaround the broken ubuntu image by @git-hulk in #2161
- Revert broken ubuntu image temporary fix by @enjoy-binbin in #2189
- Bump zstd to v1.5.6 by @aleksraiden in #2204
- Add semantics checker for KQIR by @PragmaTwice in #2207
- Add a simple pass manager for KQIR by @PragmaTwice in #2226
- Bump Snappy to 1.2.0 by @aleksraiden in #2224
- (ci) Bump apache/skywalking-eyes to 0.6.0 by @aleksraiden in #2241
- Enable CI for kvrocks2redis by @Zakelly in #2175
- ci(pr-lint): force the PR title to follow the conventional commits by @PragmaTwice in #2342
- Upload build artifact for the sonar scan by @git-hulk in #2321
- Fix missing temp dir while running sonar scan by @git-hulk in #2322
- Bump Snappy v1.2.1 by @aleksraiden in #2325
- Set ENABLE_NEW_ENCODING=FALSE in CI workflow by @PragmaTwice in #2333
- (ci) Remove 'ps aux' command from kvrocks2redis test by @aleksraiden in #2337
- chore: bump rocksdb to v9.2.1 by @aleksraiden in #2327
- chore: bump jsoncons to v176.0 by @aleksraiden in #2328
- test: fix listpack decoding in kvrocks2redis integration tests by @PragmaTwice in #2345
- build: set ENABLE_NEW_ENCODING=FALSE when building kvrocks2redis by @PragmaTwice in #2350
- chore: bump rocksdb to v9.2.2 by @aleksraiden in #2351
Documentation Changes
- Add more documents in KQIR by @PragmaTwice in #2196
- Fix invalid url in docs by @mapleFU in #2192
- Update "Type Conversion" doc by @PragmaTwice in #2235
- Fix doc typo by @Yangsx-1 in #2240
- Add more docs for the dynamic column family by @mapleFU in #2298
2.8.0
Important Notice
Dependency Updates: RocksDB is bumped from 8.8.1 to 8.11.3 in this version.
Highlights:
Set the default value of redis-cursor-compatible
to yes, so from this version, Kvrocks' SCAN
will be compatible with Redis by default. We also proudly announce that RESP3 is fully supported now, you can enable the RESP3 feature via set resp3-enabled yes
.
In addition, the cluster now can use the rocksdb write-batch to migrate slot data between instances via the APPLYBATCH
command, which is faster and consumes less CPU compared to the replay command way.
It is worth mentioning that the community is working on the RedisSearch
module, and we look forward to seeing RedisSearch
in a future release.
New Features
- Add the support of JSON.MGET command by @skyitachi in #1930
- Add support of new command: ssubscribe and sunsubscribe by @raffertyyu in #2003
- Add support of new command: RESET by @chrisxu333 in #1999
- Add the ApplyBatch command for data migration scenario by @caipengbo in #2010
- Add support of new command: ZRANDMEMBER by @JxLi0921 in #2016
- Add support of the command ZDIFF and ZDIFFSTORE by @MaheshMadushan in #2021
- Add support of the command RENAME&RENAMENX by @jihuayu in #2026
- Add support of using hyper clock cache as the block cache by @JxLi0921 in #2031
- Implement the unify WAL iterator by @caipengbo in #2040
- Initialize metadata and tag indexing encoding for RediSearch by @PragmaTwice in #2066
- Allow to migrate cluster slot by raw write batch by @caipengbo in #2067
- Add search metadata encoding for numeric fields by @PragmaTwice in #2086
- Support BIT and BYTE options in the BITCOUNT command by @kay011 in #2087
- Add a noindex flag to search metadata by @PragmaTwice in #2094
- Set the redis-cursor-compatible field to yes in the initial configuration by @jihuayu in #2103
- Implement index updating for numeric and tag field by @PragmaTwice in #2115
- Fallback to use the redis command migration type if the target don't support the ApplyBatch command by @caipengbo in #2117
- Implement the RESP3 boolean type by @git-hulk in #1991
- Implement the RESP3 null for the nil string and array by @git-hulk in #2017
- Implement RESP3 set type for the set data structure by @git-hulk in #2024
- Add the support of RESP3 map type by @git-hulk in #2028
- Add RESP3 big number by @git-hulk in #2034
- Add the support of RESP3 double type by @git-hulk in #2053
- Add support of RESP3 attribute type by @git-hulk in #2088
- Add support of RESP3 verbatim string by @wsehjk in #2102
- Add support of RESP3 in Lua by @git-hulk in #2119
Bug Fixes
- Fix redundant ERR prefix in cluster redirect error message by @git-hulk in #1928
- Avoid to fetch old value in SET command if NX/XX/GET/KEEPTTL is not set by @git-hulk in #1968
- Fix parse BITCOUNT by @tisonkun in #1979
- Fix RESET arity and command flags by @enjoy-binbin in #2018
- Fix crash in zset store getkeys, fix zdiff/bzmpop range, add tests by @enjoy-binbin in #2051
- Bugfix: BITCOUNT/BITPOS negative handling fixing by @mapleFU in #2069
- Fix incorrent bytes to calculate length of ziplist/listpack 32bit string by @git-hulk in #2124
Improvements
- Add redis_mode/kvrocks_mode fields in INFO SERVER by @enjoy-binbin in #1927
- Add the rocksdb's block cache hit/miss count to the INFO command by @git-hulk in #1938
- Add SET command KEEPTLE and GET options supported by @jihuayu in #1935
- Add no-multi no-script flags to SHUTDOWN command by @enjoy-binbin in #1957
- Add support of EXPIRETIME and PEXPIRETIME by @kay011 in #1965
- Record and export the keyspace hit/miss count to INFO command by @git-hulk in #1971
- Add the support of ANALYZE command to inspect the performance of RocksDB by @chrisxu333 in #1943
- Add INFO comment when DB not scaned by @jihuayu in #1956
- Allow to get the latest sequence number when creating the backup by @git-hulk in #1987
- Add support of BITFIELD_RO by @jyf111 in #1990
- Add the support of ZINTER and ZINTERCARD by @kay011 in #1992
- Replace manual RedisType check by calling IsSingleKVType by @PragmaTwice in #2013
- Make the result of SRANDMEMBER random by @wsehjk in #2032
- Ignore max-db-size limit when deleting data or writing aux informations by @caipengbo in #2047
- Use human readable string instead of the integer when printing flush/compaction reason by @git-hulk in #1962
- Add usage of std::move where compiler suggested by @torwig in #2099
- Check if the type is an entry while iterating the stream subkeys by @jihuayu in #2112
- Make BITPOS in Bitmap handling
stop_given
by @mapleFU in #2085 - Make COMMAND command consistent with redis when the renamed command exists by @caipengbo in #2123
- Bump jsoncons to 0.173.2 by @aleksraiden in #2082
- Bump speedb to 2.8.0 by @aleksraiden in #2080
- Bump fmtlib to 10.2.1 by @aleksraiden in #2081
- Bump jsoncons to 0.173.4 by @aleksraiden in #2089
- Bump span-lite to 0.11.0 by @aleksraiden in #2092
- Bump typo checker in CI to 1.18.1 by @aleksraiden in #2093
- Bump rocksdb to v8.9.1 by @aleksraiden in #1933
- Bump rocksdb to 8.10.0 by @aleksraiden in #2005
- Bump rocksdb to 8.10.2 by @aleksraiden in #2110
- Bump rocksdb to 8.11.3 by @aleksraiden in #2122
Misc
- Unify the way of parsing metadata by @git-hulk in #1964
- Optimize ParseMetadata by introducing RedisTypes by @PragmaTwice in #1967
- Update copyright date in NOTICE by @PragmaTwice in #1975
- Refactor kvrocks2redis via rocksdb secondary instance by @maochongxin in #1963
- The storage engine type awareness in Kvrocks by @MaheshMadushan in #1973
- Implement an unify key-value iterator for Kvrocks by @git-hulk in #2004
- Minor refactor the implementation of the command ZRANDMEMBER by @mapleFU in #2025
- Add type check before metadata decode by @jihuayu in #2015
- Minor: improve the style of zdiff by @mapleFU in #2027
- Clarification in kvrocks.conf that disable_wal will break replication by @pleaseshutup in #2029
- Run SonarQube scan in Github Actions to support coverage analysis by @PragmaTwice in #2030
- Fix build file missing in SonarCloud CI by @PragmaTwice in #2033
- Fix shell command in SonarCloud CI by @PragmaTwice in #2037
- Only runs sonar action on the main repo by @jihuayu in #2038
- Minor: avoid the implicit conversion from PinnableSlice to Slice by @mapleFU in #2039
- Remove the second parameter of MultiBulkString by @PragmaTwice in #2042
- Use condition argument of cv.wait instead of loop by @PragmaTwice in #2043
- fix(debug command): update err msg
int
->integer
by @AntiTopQuark in #2046 - Enhance error handling and types in BITFIELD by @mapleFU in #2041
- Dump github event information in CI by @PragmaTwice in #2049
- Fix sonar ...
2.7.0
Important Notice
Dependency Updates: RocksDB is bumped from 8.3.3 to 8.8.1 in this version.
Highlights:
We're thrilled to announce that the JSON data structure is supported now, huge thanks to @PragmaTwice and all contributors for making this happen. Also, basic capabilities of Functions have been supported to make up for the lack of modularity of the EVAL
-series commands.
From this release, the speedb is allowed to be used as an alternative to rocksdb, you have a try as simple as to append the build option -DENABLE_SPEEDB=ON
. Additionally, dynamic change number of worker threads is also supported and users can change it via CONFIG SET workers {NUMBER}
. Furthermore, numerous new commands and bug fixes have been implemented.
NOTICE: JSON and BloomFilter is not ready for the cluster mode yet.
New Features
- Add the support of the BF.INSERT command by @zncleon in #1768
- Add the support of the BLMPOP command by @HolyLow in #1774
- Add speedb as an alternative to rocksdb by @PragmaTwice in #1792
- Add the support of the namespace replication by @git-hulk in #1776
- Add support of command FCALL_RO by @PragmaTwice in #1791
- Implement FUNCTION commands like redis by @PragmaTwice in #1788
- Add LISTLIB subcommand as an extension to FUNCTION by @PragmaTwice in #1796
- Add the support of the load RDB command by @xq2010 in #1798
- Add subcommand and permission check to RDB command by @PragmaTwice in #1834
- Allow to change the worker thread number in-flight by @git-hulk in #1855
- Support for the BITFIELD command by @julic20s in #1901
- Support pinnable slice get by @chrisxu333 in #1888
- Support for the JSON.ARRLEN command by @Ziy1-Tan in #1856
- Support for the JSON.TOGGLE command by @MaheshMadushan in #1875
- Support JSON.ARRINDEX command by @skyitachi in #1865
- Support for CBOR as a storage format for the JSON data type by @PragmaTwice in #1871
- Support for the JSON.OBJKEYS command by @jihuayu in #1872
- Support for the JSON.ARRPOP command by @jyf111 in #1874
- Add support for the JSON.MERGE command by @2rueSid in #1852
- Support for the JSON.ARRTRIM command by @jihuayu in #1881
- Support for the JSON.ARRINSERT command by @jihuayu in #1867
- Support for JSON.STRAPPEND and JSON.STRLEN command by @guojidan in #1841
- Support for the JSON.OBJLEN command by @isHuangXin in #1860
- Support for the JSON.DEL command by @Qiaolin-Yu in #1859
- Support JSON.NUMINCRBY and JSON.NUMMULTBY command by @skyitachi in #1890
- Support of JSON.FORGET command by @git-hulk in #1917
- Support of JSON.TYPE command by @git-hulk in #1847
- Add type name of JSON in redis_metadata.h by @PragmaTwice in #1848
- Support for the JSON.CLEAR command by @2rueSid in #1850
- Add the support of the JSON.ARRAPPEND command by @lieck in #1837
- Support format options for
JSON.GET
by @PragmaTwice in #1840 - Add support of new command JSON.SET and JSON.GET by @PragmaTwice in #1803
Bug Fixes
- Fix should listen on 0.0.0.0 in docker image by @git-hulk in #1784
- Fix server crash when receiving the empty inline command by @git-hulk in #1909
- Fix unescaped characters in configuration rewriting by @PragmaTwice in #1880
- Fix server cannot start without the configuration file by @git-hulk in #1804
- Fix name of rocksdb's write delay and stop stats in INFO command by @git-hulk in #1916
- Fix potentially overflow msg_namelen value in SupervisedSystemd by @PragmaTwice in #1891
- Fix no binary directory error of xxhash in CMake by @PragmaTwice in #1779
- Fix Endian handling in rdb_intset by @mapleFU in #1830
- Fix TBB compile failure due to
-Werror
and#warning
by @PragmaTwice in #1887 - Fix output when key is not found in JSON.GET by @PragmaTwice in #1845
- Fix status mis-return in JSON.CLEAR and polish code style by @PragmaTwice in #1853
- Fix arity of JSON.SET by @mapleFU in #1849
- Fix JSON.DEL should return 0 if the key was not found by @git-hulk in #1918
- Fix code style of Json::ArrAppend by @PragmaTwice in #1846
Improvements
- Add column family parameter to Compact methon by @raffertyyu in #1878
- Allow create-cluster to be run from other dirs, not just its own dir by @enjoy-binbin in #1773
- Enable rocksdb read option
avoid_unnecessary_blocking_io
to avoid unexpected long latency by @wanghenshui in #1903 - Make a compile error while facing unused variables by @PragmaTwice in #1854
- Add more sanity checks for docker image by @jyf111 in #1877
- Change the default value of cmake option DEPS_FETCH_PROXY by @git-hulk in #1900
- Catch up for json-set with multiple values by @mapleFU in #1827
- Bump rocksdb to 8.5.4 by @aleksraiden in #1786
- Bump rocksdb to version 8.6.7 by @aleksraiden in #1794
- Bump rocksdb to 8.7.3 by @aleksraiden in #1902
- Bump rocksdb to 8.8.1 by @aleksraiden in #1904
- Bump jsoncons to 0.172.0 by @aleksraiden in #1911
- Bump jsoncons to 0.171.1 by @aleksraiden in #183
- Bump oneTBB to 2011.11.0 by @aleksraiden in #1895
- Bump speedb to 2.7.0 by @aleksraiden in #1857
Misc
- Skip TLS replica test until fixed by @PragmaTwice in #1780
- Restore the GCC TSAN test in CI by @PragmaTwice in #1782
- Update controller URL in README.md by @PragmaTwice in #1785
- Split functions in main.cc to multiple headers by @PragmaTwice in #1787
- Style enhancement for rdb load by @mapleFU in #1839
- Refactor command utilities to class methods by @PragmaTwice in #1858
- Unify server's shorten form, change svr to srv by @git-hulk in #1861
- Polish wording and code block style in README by @PragmaTwice in #1862
- Only run publish-nightly action on the main repo by @jihuayu in #1868
- Don't rewrite unchanged items into the configuration file by @git-hulk in #1882
- Fix go test
JSON.TOGGLE basics
parameters order by @jihuayu in #1892 - Graceful shutdown the workers when reducing worker threads by @git-hulk in #1863
- Add the bind argument to the docker quickstart section by @git-hulk in #1906
- Clear unused vector by @kay011 in #1915
- Improve the command JSON.MERGE via jsonpath::remove by @2rueSid in #1919
- Minor refactor the return value of JSON methods by @git-hulk in #1920
New Contributors
- @lieck made their first contribution in #1837
- @2rueSid made their first contribution in #1850
- @Ziy1-Tan made their first contribution in #1856
- @jyf111 made their first contribution in #1874
- @raffertyyu made their first contribution in #1878
- @MaheshMadushan made their first contribution in #1875
- @chrisxu333 made their first contribution in #1888
- @kay011 made their first contribution in #1915
- @julic20s made t...
2.6.0
Important Notice
Dependency Updates: RocksDB is bumped from 8.3.2 to 8.3.3 in this version.
Configuration Changes: The default value of max-io-mb
is changed to 0
(unlimited), and rocksdb.level_compaction_dynamic_level_bytes
changed to yes
from no
.
Highlights: In this release, we have added support for the BloomFilter data structure and most of its commands (prefixed with BF.
). Special thanks to @zncleon and @mapleFU. Additionally, the RESTORE
command has been supported by @git-hulk to facilitate various data migration scenarios, such as using RedisShake upon Kvrocks. Moreover, TLS can now secure not only server connections but also replication connections. Furthermore, numerous new commands and bug fixes have been implemented. We extend our gratitude to all contributors!
New Features
- Add the BloomFilter data structure and commands by @zncleon and @mapleFU in #1696
- Add the support of the RESTORE command by @git-hulk in #1684
- Support TLS for replication by @PragmaTwice in #1630
- Add the support of BLMOVE by @Yangsx-1 in #1592
- Add the support of the HRANDFIELD command by @zevin02 in #1565
- Add support for GEOSEARCH and GEOSEARCHSTORE by @uds5501 in #1533
- Add new MPUBLISH command by @torwig in #1657
- Add the support of the LPOS command by @JoverZhang in #1681
- Add LASTSAVE command by @xq2010 in #1702
- Add the support of LMPOP command by @HolyLow in #1737
Improvements
- Add dynamic key range generator with multiple range output by @infdahai in #1541
- Reduce the block cache configurations into a single one by @Yangsx-1 in #1549
- Make INFO command reject cases with arguments greater than 2 by @enjoy-binbin in #1570
- Avoid Write calls when SIADD added_cnt is 0 by @enjoy-binbin in #1577
- Storage: Extract an MultiGet Options for rocksdb::MultiGet by @mapleFU in #1582
- Return an error when Stream::Range fails and remove some debug server logs by @enjoy-binbin in #1556
- Use LMOVE logic to handle RPOPLPUSH by @enjoy-binbin in #1596
- Enable the jemalloc option --disable-cache-oblivious by @aleksraiden in #1575
- Update error message and add the ERR error code by @enjoy-binbin in #1597
- Support change log-level in runtime by @enjoy-binbin in #1611
- Skip WATCH if connection is already dirty by @enjoy-binbin in #1612
- ZRANGE / ZREVRANK add withscore option support by @enjoy-binbin in #1607
- Make lock guard movable & accept generalized arguments by @PragmaTwice in #1636
- Remove useless memory allocation & string field in lock manager & guard by @PragmaTwice in #1637
- Make special exclusive command check a function by @PragmaTwice in #1638
- Make config enum error more clear for users by @PragmaTwice in #1639
- Use EqualICase instead of strcasecmp in cluster by @PragmaTwice in #1640
- Add EvconnlistenerBase to avoid void* casts by @PragmaTwice in #1641
- MSET change it to batch write instead of batch per key by @enjoy-binbin in #1634
- Print version as kvrocks in kvrocks2redis by @PragmaTwice in #1649
- CAS command supports EXAT and PXAT options by @enjoy-binbin in #1650
- Refactor replication callbacks via templates by @PragmaTwice in #1646
- Add dynamic flag generator to replace adhoc logic in ExecuteCommands by @PragmaTwice in #1655
- GEOSEARCH* from is not optional, FROMLONLAT or FROMMEMBER must require by @enjoy-binbin in #1656
- Fix several mismatching default option values and their comments by @aleksraiden in #1664
- Return string instead of output pointer in metadata by @PragmaTwice in #1671
- Rename cluster-enable in kvrocks2redis to cluster-enabled by @enjoy-binbin in #1673
- Try to recover automatically from the background error about sst corrupt by @caipengbo in #1667
- Define variables more close to its use place in types by @PragmaTwice in #1675
- Bind to localhost by default for security by @PragmaTwice in #1676
- Refactor encoding via templates by @PragmaTwice in #1683
- Add returned next pointer for EncodeFixed by @PragmaTwice in #1685
- Use StatusOr in util::GetPeerAddr by @PragmaTwice in #1688
- Improve the cleanup order in the main function by @PragmaTwice in #1698
- Use MultiLockGuard to guarantee atomicity for multiple keys commands by @enjoy-binbin in #1700
- Remove the no-script flag in the LASTSAVE command by @enjoy-binbin in #1708
- Change the default value of max-io-mb to 0 (unlimited) by @enjoy-binbin in #1713
- Use
emplace
instead ofinsert
for map by @PragmaTwice in #1718 - Use resp functions instead of manual concatenation by @PragmaTwice in #1717
- Replace the random char seed to global rand to avoid collision by @git-hulk in #1729
- Split Inter in ZSet::InterStore into a separate function by @enjoy-binbin in #1726
- Introduce MDel do the batch delete and use MultiLockGuard guarantee atomicity by @enjoy-binbin in #1712
- Make output slice of Metadata::Decode available by @PragmaTwice in #1738
- Fix error messages in parsing of bit commands by @gogim1 in #1739
- Add the client name and ipport to the slowlog output by @LiuYuHui in #1740
- Add missing const specifiers to methods by @PragmaTwice in #1744
- Remove redundant string contruction from Slice by @PragmaTwice in #1745
- Allow runing RANDOMKEY in lua script by @enjoy-binbin in #1746
- Add nodiscard attribute to methods of Storage by @PragmaTwice in #1750
- Add nodiscard to Metadata::Decode by @PragmaTwice in #1751
- Add nodiscard to methods of redis::Database by @PragmaTwice in #1752
- Add BlockingCommander to refactor all blocking commands by @PragmaTwice in #1757
- Fix pointer-bool-conversion warning in
GeoHashHelper::BoundingBox
by @gogim1 in #1760 - Use SSL_sendfile in SockSendFile while available by @PragmaTwice in #1762
Bug Fixes
- Fix EVAL crashing server when numkeys is -1 by @enjoy-binbin in #1568
- Fix SCRIPT EXISTS arity by @enjoy-binbin in #1567
- Fix EXEC / DISCARD without MULTI wrongly reset watch by @enjoy-binbin in #1562
- Fix GEOHASH / GEOPOS should return nil array instead of error for non-existing key by @enjoy-binbin in #1573
- Fix DECRBY LLONG_MIN caused an overflow by @enjoy-binbin in #1581
- ZUNION arity should be -3 instread of -4 by @enjoy-binbin in #1589
- Fix ZRANGESTORE arity -4 crash the server by @enjoy-binbin in #1593
- Fix config set compression type didn't take effect by @xiaobiaozhao in #1576
- Fix INFO used_memory_rss_human field name by @enjoy-binbin in #1595
- Fix: Enable portable flag for Docker container builds by @ovaistariq in #1602
- Fix ZREMRANGEBYSCORE arity, should be 4 instead of -4 by @enjoy-binbin in #1604
- Fix ZRANGESTORE not overwrite the dst key by @enjoy-binbin in #1609
- Fix data race when updating the slots_info string by @git-hulk in #1615
- Fix GEOSEARCH/GEOSEARCHSTORE FROMMEMBER against non existing src key reply by @enjoy-binbin in #1625
- Fix missing pop in ScriptExists by @PragmaTwice in https://...
2.5.1
Highlights: This release only contains bug fixes since 2.5.0 and some critical issues need to be noticed. For #1615, the data race when reading the cluster slot's info may cause the server to crash in cluster mode, and #1568 / #1593 will also crash the server if users pass the wrong arguments.
Bug Fixes
- Fix a data race when updating the slots_info string by @git-hulk in #1615
- Fix make warning on GCC by @Yangsx-1 in #1605
- Fix ZRANGESTORE not overwrite the dst key by @enjoy-binbin in #1609
- Fix ZREMRANGEBYSCORE arity, should be 4 instead of -4 by @enjoy-binbin in #1604
- Fix Docker image may crash if running on the AMD platform by @ovaistariq in #1602
- Fix INFO used_memory_rss_human field name by @enjoy-binbin in #1595
- Return an error when Stream::Range fails and remove some debug server logs by @enjoy-binbin in #1556
- Fix config set compression type didn't take effect by @xiaobiaozhao in #1576
- Fix ZRANGESTORE arity -4 that crashes the server by @enjoy-binbin in #1593
- Fix version typo in a variable name by @enjoy-binbin in #1591
- ZUNION arity should be -3 instead of -4 by @enjoy-binbin in #1589
- Fix DECRBY LLONG_MIN caused an overflow by @enjoy-binbin in #1581
- Fix GEOHASH / GEOPOS should return nil array instead of error for non-existing key by @enjoy-binbin in #1573
- Fix EXEC / DISCARD without MULTI wrongly reset watch by @enjoy-binbin in #1562
- Fix SCRIPT EXISTS arity by @enjoy-binbin in #1567
- Fix EVAL crashing server when numkeys is -1 by @enjoy-binbin in #1568
2.5.0
Important Notice
Dependency Updates: RocksDB is bumped from 8.1.1 to 8.3.2 in this version.
Highlights: We have supported Redis-compatible SCAN
cursors so that you can use any Redis client library to perform the SCAN far painless than before. Enable it via redis-cursor-compatible
in the configuration file. Many thanks to @jihuayu. Meanwhile, lots of ZSET commands are newly supported, like ZMPOP, ZRANGESTORE, BZMPOP, ZUNION. Many thanks to @infdahai for driving them and other contributors for implementing them. The detailed changes and contributors are listed below.
New Features
- Add Redis-compatible cursors for
SCAN
commands by @jihuayu in #1489 - Add support of the ZMPOP command by @MizukiCry in #1468
- Add support of the ZRANGESTORE command by @jihuayu in #1482
- Add support of the SINTERCARD command by @infdahai in #1444
- Add support of the BZMPOP command by @Yangsx-1 in #1490
- Add support of the new command ZUNION by @uds5501 in #1502
- Support slot batch for CLUSTERX SETSLOT by @infdahai in #1414
- Support blocking migration for the cluster migrate command by @ellutionist in #1418
- Support RocksDB auto-tune rate limiter for the background IO by @wanghenshui in #1424
Improvements
- Add separate mutex that protects blocked stream consumers by @torwig in #1471
- Add test case for the HMGET command by @zevin02 in #1467
- Escape the special chars in the monitor command output by @wy-ei in #1476
- Add a particular test case for HGETALL with async_io=true by @torwig in #1401
- Relax the lower bound of the expiration test case to make tests more stable by @git-hulk in #1437
- Add the ability to use the '*-123' pattern to specify stream entry ID via XADD by @torwig in #1405
- Allow default username and fix case-sensitive check in HELLO by @rueian in #1406
- Introduce UniqueEvent and CallbackBase for a more intuitive event handle by @PragmaTwice in #1420
- Add redis-cli to the nightly image by @ColinChamber in #1415
- Docker image based on Alpine Linux by @aleksraiden in #1434
- Use constexpr to simplify the getXXX method in EvbufCallbackBase by @ellutionist in #1443
- Migrate go-redis/redis to redis/go-redis by @infdahai in #1446
- Don't use auto-retry in unit/type/list_test.go by @git-hulk in #1463
- Use the rocksdb mget to improve the performance by @zevin02 in #1453
- Parse the timeout parameter as double in the blocking command by @Yangsx-1 in #1518
- Warning message for invalid key in the configuration file by @gloof11 in #1498
- Bump rocksdb v8.3.2 by @aleksraiden in #1516
- Add TakeFloat to Command Parser by @PragmaTwice in #1505
- Don't allow the instance replication of itself and its own replicas by @uds5501 in #1488
- Bump fmtlib to 10.0.0 by @aleksraiden in #1435
- Bump jsoncons to v170.0.2 by @aleksraiden in #1438
- Bump luaJIT to c0a8e68 by @xiaobiaozhao in #1399
- Bump jsoncons to v0.170.1 by @aleksraiden in #1426
- Bump oneTBB to v2021.9.0 by @aleksraiden in #1432
Bug Fixes
- Fix backtrace lib for musl building support by @aleksraiden in #1431
- Return error from CommandZRangeGeneric in case of unexpected range_type by @torwig in #1430
- Fix flaky test case in Go unit/type/list.go by @git-hulk in #1449
- Fix flaky test in migration timeout by @git-hulk in #1464
- Fix all weird out parameters
int *ret
in the codebase by @jihuayu in #1479 - Fix crash when hitting the perflog command rule by @git-hulk in #1481
- Fix SCRIPT misleading error message by @enjoy-binbin in #1561
- Fix ZUNION hang in syntax error by @enjoy-binbin in #1559
- Avoid printing the invalid configuration key when loading namespaces by @git-hulk in #1558
- Fix GETEX not checking wrong type error causing key overwriting by @enjoy-binbin in #1546
- LSET return no suck key instead of NotFound when the key does not exist by @enjoy-binbin in #1557
- Fix plain GETEX wrongly removing expiration time by @enjoy-binbin in #1548
- Fix compile error after upgrading the rocksdb by @git-hulk in #1542
- Fix ZMPOP/BZMPOP duplicate parameters by @enjoy-binbin in #1543
- Fix stdin usage text in PrintUsage by @enjoy-binbin in #1537
- Fix the inconsistent response behavior with Redis in memory usage command by @git-hulk in #1539
- Fix incorrect mount data in docker volume by @aleksraiden in #1507
- Fix data race when joining the task runner by @git-hulk in #1493
- Fix a few typos in CMakeLists.txt by @torwig in #1496
- Fix ZRANGE command should return an empty array when count = 0 by @infdahai in #1492
Build & CI related
- Suppress error in TBB to make build failure for GCC 12 and above by @torwig in #1440
- Add path-filter by @tisonkun in #1422
- Fix needs param by @tisonkun in #1427
- Tidy dockerfile by @tisonkun in #1477
- Disable
-static-libgcc
on MacOS building by @mapleFU in #1555 - Automatically download the golangci-lint if not exists by @infdahai in #1491
Misc
- Remove global server ptr getter used in scripting by @PragmaTwice in #1486
- Replace header <sys/poll.h> to <poll.h> in io_util.cc by @aleksraiden in #1433
- Support specify release candidate number by @ZENOTME in #1419
- Remove useless type cast in redis_slot.cc by @PragmaTwice in #1409
- Rename internal macro ENABLE_NEW_ENCODING to METADATA_ENCODING_VERSION by @PragmaTwice in #1408
- Print error when occurring the flaky test in TestBitmap by @infdahai in #1473
- Refine functions and add parsing test to set and zset by @zncleon in #1475
- Avoid manually releasing DB pointer via unique_ptr by @PragmaTwice in #1487
- Show CI badge for unstable branch exactly by @tisonkun in #1547
- List each command on a separate line in list type by @infdahai in #1531
- Drop
incubator-
prefix from Go test files, as well as yaml files and comment lines by @git-hulk in #1519 - Remove incubator/incubating from README by @PragmaTwice in #1514
- Remove user and group from Docker by @aleksraiden in #1513
- Remove incubating from the x.py and DISCLAIMER file by @git-hulk in #1515
- Remove ConnContext pointers to prevent manual allocation by @PragmaTwice in #1499
- Rename KvrocksLabs to RocksLabs in cmake by @PragmaTwice in #1436
New Contributors
- @rueian made their first contribution in #1406
- @ZENOTME made their first contribution in #1419
- @MizukiCry made their first contribution in #1468
- @zncleon made their first contribution in #1475
- @wy-ei made their first contribution in #1476
- @jihuayu made their first contribution in #1479
- @uds5501 made their first contribution in #1488
- @gloof11 made their first contribution in #1498
Full Changelog: v2.4.0...v2.5.0-rc2