Releases: OpenAtomFoundation/pika
Release v4.0.2-alpha
🚀 New Features:
- feat:After the Pika slave instance executes slaveof no one to remove the replication relationship with the master node, the slaveof information is persisted into the configuration file. #2973
- feat:Added support for backup and recovery in master-slave mode for Pika-Operator. #2968
- feat:Added the
log-net-activities
parameter in the configuration file to dynamically enable or disable the logging of certain connection-related activities. This can be adjusted withconfig get/set
. #2964 - feat: Added the
repl_connect_status
metric to Pika info and integrated it intopika_exporter
to facilitate monitoring of the replication status. #2961 - feat: Upgraded
kubeblocks
to version 0.9, improving and optimizing Pika-Operator to simplify code and support instance scale-down. #2860 - feat: Pika-Operator now supports starting in master-slave mode. See the README document for more details. [#2903]
- feat: Added
keyspace_hits
andkeyspace_misses
metrics topika_exporter
, enabling users to monitor key hit rates. #2579 - feat: RedisCache now avoids storing large keys to prevent excessive memory usage or the eviction of frequently accessed hot keys, which could impact performance. #2557
🐛 Fixes:
- fix:Fixed the
rpoplpush
command cache update issue, which caused inconsistency between the database and cache. #2976 - fix:Fixed compatibility issues between different versions of Pika-Exporter, which caused excessive logging and wasted disk resources. #2971
- fix: Adjusted the log level of
slowlog
to INFO to address the issue of triple logging, which consumed excessive disk space. #2948 - fix: Improved CI stability by resolving specific failure issues. #2937
- fix: Fixed an issue where Pika instances could not set administrator passwords independently. #2920
- fix: Resolved a reference counter destructor issue in the epoll loop for
std::shared_ptr in_conn
objects, ensuring Pika connections are closed in a timely manner. #2904 - fix: Fixed a cache inconsistency issue caused by the
zpopmin
command during deletion operations. #2892
🧹 Improvement:
- feat: Pika now supports dynamically modifying the
max-subcompactions
parameter to optimize thecompact
operation for L0 layers at runtime. #2965 - feat: Improved the
log-retention-time
parameter to dynamically adjust the number of days for log retention. #2963 - feat: Moved the
Pika-Migrate
code to thetools
folder to simplify binary compilation in different environments for data migration. #2941 - feat: aAdded Go tests for Pika complex data types and management commands to ensure service stability. #2840
- feat:Updated the
actions/checkout
in GitHub Actions workflow to v5 for enhanced security and performance. #2833 - feat:Added a new compact strategy in Pika to optimize write performance by prioritizing files unused for the longest time or files with the most deleted entries. #2557
📒 Documentation: PikiwiDB
Full Changelog: v4.0.1...v4.0.2-alpha
Thanks to @007gzs, @baerwang , @cheniujh , @buzhimingyonghu , @chejinge , @Mixficsol , @QlQlqiqi , @chenbt-hz , @XiaoLiang2333 and @tsinow for making this release possible.
Release v4.0.1-alpha
🚀 New Features:
- fix: add a function for washing data after upgrading version from 4.0.0 to 4.0.1 (#2888)
- docs:add 355 changelog (#2867)
- docs: add platform rocky linux (#2859)
- feat:Statistics ticker count (#2769)
- feat:Added the periodically clearing serverlog function (#2829)
- feat:incr send binlog withttl (#2833)
- fix: add switch for RTC cache read (#2841)
- fix: execute hincrby cmd more than one times after delete a field which is existing (#2836)
- feat: use RTC(Run-to-completion) model to speed up cache read (#2837)
- feat: add a new test env (rocky linux) in github ci. (#2806) (#2823)
- feat: add more cache info (#2797)
- fix: revised TimerTaskManager and add some comments (#2776)
🐛 Fixes:
- fix:caculate memory (#2899)
- fix:Segmentation fault in zremrangebyrank (#2896)
- fix: change storage ttl time from seconds to milliseconds (#2857)
- fix: add a function for washing data after upgrading version from 4.0.0 to 4.0.1 (#2888)
- fix: rpushx cmd insert error (#2879)
- fix: v3.5.5 changelog patch (#2877)
- fix: pika may compile fail in some centos platform (#2865)
- fix: make pika compactible with redis-sentinel (#2854)
- fix: kill connections correctly in Net WorkThread (#2862)
- fix: blpop/brpop don't update cache (#2858)
- fix: make flushall write binlog of flushdb (#2846)
- fix: Revert change storage ttl time from seconds to milliseconds and clear space in CI after compile (#2853)
- fix: change storage ttl time from seconds to milliseconds (#2822)
- fix: multi command through cache (#2812)
- fix: add switch for RTC cache read (#2841)
- fix: execute hincrby cmd more than one times after delete a field which is existing (#2836)
- fix:delete logs (#2840)
- fix: flushdb may cause master-slave inconsistency (#2808)
- test: fix multi bug and compatible ACL test (#2815)
- fix: PkPatternMatchDel inconsistent between rediscache and db (#2777)
- fix: successive exec of flushdb may cause delete old db fail (#2790)
- fix:slave_prorority need to be 100 when used redis sentinel (#2813)
- fix: masetr-slave maybe inconsistent due to bgsave may provide a wrong binlog offset (#2818)
- fix: changed the calculating logic of epoll timeout provided by TimerTaskManager (#2794)
- fix: abnormal log output when exec slaveof no one (#2801)
- fix: add metric is_eligible_for_master_election to support reelection decision in codis-sentinel (#2766)
- fix: set SlaveNode to DBSync status before commit bgsave task (#2798)
- fix: use slaveof force when a pika server recovered and delete CentOS github CI workflow config (#2789)
📚 Documentation:
- docs:4.0.1 changelog (#2902)
- fix: v3.5.5 changelog patch (#2877)
- docs:add 355 changelog (#2867)
- docs: add platform rocky linux (#2859)
- fix: revised TimerTaskManager and add some comments (#2776)
🧹 Updates:
- fix: blpop/brpop don't update cache (#2858)
- fix: Revert change storage ttl time from seconds to milliseconds and clear space in CI after compile (#2853)
- test: fix multi bug and compatible ACL test (#2815)
- feat: add a new test env (rocky linux) in github ci. (#2806) (#2823)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v4.0.1-alpha
📒 Documentation: PikiwiDB
Full Changelog: v4.0.0...v4.0.1-alpha
Thanks to @007gzs, @QlQlqiqi, @VanessaXWGUO, @XiaoLiang2333, @baerwang, @baixin01, @bigdaronlee163, @chejinge, @cheniujh, @hahahashen, @haiyang426 and @luky116 for making this release possible.
Release v4.0.1
🚀 New Features:
- fix: add a function for washing data after upgrading version from 4.0.0 to 4.0.1 (#2888)
- docs:add 355 changelog (#2867)
- docs: add platform rocky linux (#2859)
- feat:Statistics ticker count (#2769)
- feat:Added the periodically clearing serverlog function (#2829)
- feat:incr send binlog withttl (#2833)
- fix: add switch for RTC cache read (#2841)
- fix: execute hincrby cmd more than one times after delete a field which is existing (#2836)
- feat: use RTC(Run-to-completion) model to speed up cache read (#2837)
- feat: add a new test env (rocky linux) in github ci. (#2806) (#2823)
- feat: add more cache info (#2797)
- fix: revised TimerTaskManager and add some comments (#2776)
🐛 Fixes:
- fix:caculate memory (#2899)
- fix:Segmentation fault in zremrangebyrank (#2896)
- fix: change storage ttl time from seconds to milliseconds (#2857)
- fix: add a function for washing data after upgrading version from 4.0.0 to 4.0.1 (#2888)
- fix: rpushx cmd insert error (#2879)
- fix: v3.5.5 changelog patch (#2877)
- fix: pika may compile fail in some centos platform (#2865)
- fix: make pika compactible with redis-sentinel (#2854)
- fix: kill connections correctly in Net WorkThread (#2862)
- fix: blpop/brpop don't update cache (#2858)
- fix: make flushall write binlog of flushdb (#2846)
- fix: Revert change storage ttl time from seconds to milliseconds and clear space in CI after compile (#2853)
- fix: change storage ttl time from seconds to milliseconds (#2822)
- fix: multi command through cache (#2812)
- fix: add switch for RTC cache read (#2841)
- fix: execute hincrby cmd more than one times after delete a field which is existing (#2836)
- fix:delete logs (#2840)
- fix: flushdb may cause master-slave inconsistency (#2808)
- test: fix multi bug and compatible ACL test (#2815)
- fix: PkPatternMatchDel inconsistent between rediscache and db (#2777)
- fix: successive exec of flushdb may cause delete old db fail (#2790)
- fix:slave_prorority need to be 100 when used redis sentinel (#2813)
- fix: masetr-slave maybe inconsistent due to bgsave may provide a wrong binlog offset (#2818)
- fix: changed the calculating logic of epoll timeout provided by TimerTaskManager (#2794)
- fix: abnormal log output when exec slaveof no one (#2801)
- fix: add metric is_eligible_for_master_election to support reelection decision in codis-sentinel (#2766)
- fix: set SlaveNode to DBSync status before commit bgsave task (#2798)
- fix: use slaveof force when a pika server recovered and delete CentOS github CI workflow config (#2789)
📚 Documentation:
- docs:4.0.1 changelog (#2902)
- fix: v3.5.5 changelog patch (#2877)
- docs:add 355 changelog (#2867)
- docs: add platform rocky linux (#2859)
- fix: revised TimerTaskManager and add some comments (#2776)
🧹 Updates:
- fix: blpop/brpop don't update cache (#2858)
- fix: Revert change storage ttl time from seconds to milliseconds and clear space in CI after compile (#2853)
- test: fix multi bug and compatible ACL test (#2815)
- feat: add a new test env (rocky linux) in github ci. (#2806) (#2823)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v4.0.1-alpha
📒 Documentation: PikiwiDB
Full Changelog: v4.0.0...v4.0.1-alpha
Thanks to @007gzs, @QlQlqiqi, @VanessaXWGUO, @XiaoLiang2333, @baerwang, @baixin01, @bigdaronlee163, @chejinge, @cheniujh, @hahahashen, @haiyang426 and @luky116 for making this release possible.
Release v3.5.5
🚀 New Features:
- Add a switch for the RTC model, allowing control over whether to enable the RTC mode (#2841)
- Use the RTC model to handle Pika access caching, improving Pika's read performance (#2837)
- For the incr and append commands, use the pksetexat command during binlog transmission to prevent data from not expiring due to incorrect operations, which could result in stale data (#2833)
- Add a scheduled task to delete logs, which by default deletes logs every 7 days. This can be configured in the config file based on your needs (#2829)
- Move management commands out of the main thread to prevent blocking the main thread due to frequent or time-consuming management command calls (#2727)
- Organize Pika threads to avoid resource waste caused by starting unnecessary threads (#2697)
- Add the Pika benchmark tool to improve testing efficiency and generate visualized statistical charts (#2697)
Improvements
- Optimize master-slave replication to ensure that the SlaveNode on the Master side enters the DBSync state before submitting the bgsave task, preventing the binlog from being cleared during the bgsave execution in extreme cases (#2798)
- Support dynamic adjustment of more RocksDB parameters, allowing users to adjust parameters based on different business scenarios to improve Pika's read and write performance (#2728)
- Optimize the locking mechanism when applying binlog to reduce unnecessary lock contention (#2773)
- Add TCL tests for the Geo data type and fix bugs encountered during testing (#2753)
- Update the Pika Docker README, allowing deployment of the Pika service in Docker according to the README (#2743)
- The Pkpatternmatchdel command now supports deleting Redis Stream data types (#2723)
- Add a replication status metric repl_connect_status, making it easier for operations personnel to clearly determine the current master-slave replication status (#2656)
- Refactor the master-slave replication thread model on the slave node to minimize binlog consumption blocking issues (#2638)
- Add dynamic adjustment parameters for the RocksDB Compaction strategy, allowing users to adjust the Compaction strategy according to their business needs to reduce the performance impact of the Compaction operation (#2735)
🐛 Fixes:
- Modify the timeout for the Pika automated test client to connect to the server, preventing test failures due to long disconnections (#2863)
- Fixed an incorrect process in the kill client command for terminating connections (#2862)
- Fix an issue where blpop/brpop would not update the cache when updating the database, which could cause inconsistencies between the database and the cache (#2858)
- Fixed an issue where Pika did not support Redis-Sentinel (#2854)
- Modify the flushall logic to avoid multiple data cleanups during unified processing (#2846)
- The PkPatternMatchDel command now deletes cache entries along with the database entries, preventing inconsistencies between the database and cache (#2839)
- Optimize the scope of read locks to avoid inconsistencies between master and slave data due to repeated binlog consumption (#2818)
- Modify the client watch key so that it becomes invalid if modified by anyone (including the client's own modifications) (#2815)
- Modified the default value of slave_priority to prevent master-slave switch failures due to the absence of this setting by operations personnel (#2813)
- The MULTI command now updates the cache simultaneously when updating the database, preventing issues with data retrieval (#2812)
- Fixed the issue of Sentinel role reversal errors during master-slave switching caused by data inconsistency between the master and slave nodes during the switch (#2808)
- Modified the handling logic of flushdb binlog during master-slave replication to ensure sequential execution, preventing inconsistencies between master and slave data (#2808)
- Fix an issue where an error log would be output when executing slaveof no one (#2800)
- Fixed inaccuracies in Pika block-cache information calculation, which resulted in incorrect memory usage calculations (#2797)
- Modify the Handling Logic of FLUSHDB in Binlog During Master-Slave Replication to Ensure Sequential Execution and Prevent Inconsistencies Between Master and Slave (#2794)
- Added flag, timestamp, and return value mechanisms to ensure correct handling of conflicts when executing flushdb and processing asynchronous deletion of old directories in Pika (#2790)
- Fix an issue where the PKPatternMatchDel command did not delete the iterator, which could result in incomplete data deletion in RocksDB (#2786)
- Rename timerTaskThread_ to timer_task_thread_ (#2776)
- Fix an issue where the min-blob-size parameter would fail to parse, causing errors in KV separation (#2767)
- Fix an issue where the Zverank command would calculate incorrectly, leading to erroneous return values (#2763)
- Fix an issue where the Pksetat command did not update the cache while updating the database, which could cause inconsistencies between the database and the cache (#2759)
- Fixed an error occurring during data migration with Pika-port (#2758)
- Fix an issue where the RsynClient did not handle failures after an abnormal exit, resulting in incomplete data during full replication (#2756)
- Fix an issue where Pika could not be expanded in batches (#2746)
- Corrected uninitialized parameters in slotsscan and bgsave commands to ensure proper balancing (#2745)
- Fix an issue where incorrect return values from the SlotMigrate command could interrupt data migration (#2741)
- Fix an issue where the RedisCache layer could cause inconsistencies between the database and the cache due to not using the TTL parsed by the storage layer (#2729)
- Fix an issue where Stream-type data could not be compacted by RocksDB, causing expired data to persist (#2724)
- Fix an issue where ACL authentication might fail sporadically (#2714)
- Fixed an issue where Pika cmdID assignment in the Cmd initialization function could cause data race during concurrent construction (#2692)
- Fixed a potential race condition in Spop when writing binlog (#2674)
- Fixed a data race issue in server_stat (#2671)
- Enhanced the full sync process to automatically retry after a timeout in multi-DB environments (#2667)
- Fixed a potential window crash issue under timeout scenarios in multi-DB master-slave environments (#2666)
- Fixed repeated unlocking issues in master-slave sync rate limiting logic (#2657)
📚 Documentation:
- docs:add 355 changelog (#2867)
- docs: add platform rocky linux (#2859)
- fix: revised TimerTaskManager and add some comments (#2776)
🧹 Updates:
- fix: blpop/brpop don't update cache (#2858)
- fix: Revert change storage ttl time from seconds to milliseconds and clear space in CI after compile (#2853)
- test: fix multi bug and compatible ACL test (#2815)
- feat: add a new test env (rocky linux) in github ci. (#2806) (#2823)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.5-alpha
📒 Documentation: PikiwiDB
**Full Change...
Release v3.5.5-alpha
🚀 New Features:
- Add a switch for the RTC model, allowing control over whether to enable the RTC mode (#2841)
- Use the RTC model to handle Pika access caching, improving Pika's read performance (#2837)
- For the incr and append commands, use the pksetexat command during binlog transmission to prevent data from not expiring due to incorrect operations, which could result in stale data (#2833)
- Add a scheduled task to delete logs, which by default deletes logs every 7 days. This can be configured in the config file based on your needs (#2829)
- Move management commands out of the main thread to prevent blocking the main thread due to frequent or time-consuming management command calls (#2727)
- Organize Pika threads to avoid resource waste caused by starting unnecessary threads (#2697)
- Add the Pika benchmark tool to improve testing efficiency and generate visualized statistical charts (#2697)
Improvements
- Optimize master-slave replication to ensure that the SlaveNode on the Master side enters the DBSync state before submitting the bgsave task, preventing the binlog from being cleared during the bgsave execution in extreme cases (#2798)
- Support dynamic adjustment of more RocksDB parameters, allowing users to adjust parameters based on different business scenarios to improve Pika's read and write performance (#2728)
- Optimize the locking mechanism when applying binlog to reduce unnecessary lock contention (#2773)
- Add TCL tests for the Geo data type and fix bugs encountered during testing (#2753)
- Update the Pika Docker README, allowing deployment of the Pika service in Docker according to the README (#2743)
- The Pkpatternmatchdel command now supports deleting Redis Stream data types (#2723)
- Add a replication status metric repl_connect_status, making it easier for operations personnel to clearly determine the current master-slave replication status (#2656)
- Refactor the master-slave replication thread model on the slave node to minimize binlog consumption blocking issues (#2638)
- Add dynamic adjustment parameters for the RocksDB Compaction strategy, allowing users to adjust the Compaction strategy according to their business needs to reduce the performance impact of the Compaction operation (#2735)
🐛 Fixes:
- Modify the timeout for the Pika automated test client to connect to the server, preventing test failures due to long disconnections (#2863)
- Fixed an incorrect process in the kill client command for terminating connections (#2862)
- Fix an issue where blpop/brpop would not update the cache when updating the database, which could cause inconsistencies between the database and the cache (#2858)
- Fixed an issue where Pika did not support Redis-Sentinel (#2854)
- Modify the flushall logic to avoid multiple data cleanups during unified processing (#2846)
- The PkPatternMatchDel command now deletes cache entries along with the database entries, preventing inconsistencies between the database and cache (#2839)
- Optimize the scope of read locks to avoid inconsistencies between master and slave data due to repeated binlog consumption (#2818)
- Modify the client watch key so that it becomes invalid if modified by anyone (including the client's own modifications) (#2815)
- Modified the default value of slave_priority to prevent master-slave switch failures due to the absence of this setting by operations personnel (#2813)
- The MULTI command now updates the cache simultaneously when updating the database, preventing issues with data retrieval (#2812)
- Fixed the issue of Sentinel role reversal errors during master-slave switching caused by data inconsistency between the master and slave nodes during the switch (#2808)
- Modified the handling logic of flushdb binlog during master-slave replication to ensure sequential execution, preventing inconsistencies between master and slave data (#2808)
- Fix an issue where an error log would be output when executing slaveof no one (#2800)
- Fixed inaccuracies in Pika block-cache information calculation, which resulted in incorrect memory usage calculations (#2797)
- Modify the Handling Logic of FLUSHDB in Binlog During Master-Slave Replication to Ensure Sequential Execution and Prevent Inconsistencies Between Master and Slave (#2794)
- Added flag, timestamp, and return value mechanisms to ensure correct handling of conflicts when executing flushdb and processing asynchronous deletion of old directories in Pika (#2790)
- Fix an issue where the PKPatternMatchDel command did not delete the iterator, which could result in incomplete data deletion in RocksDB (#2786)
- Rename timerTaskThread_ to timer_task_thread_ (#2776)
- Fix an issue where the min-blob-size parameter would fail to parse, causing errors in KV separation (#2767)
- Fix an issue where the Zverank command would calculate incorrectly, leading to erroneous return values (#2763)
- Fix an issue where the Pksetat command did not update the cache while updating the database, which could cause inconsistencies between the database and the cache (#2759)
- Fixed an error occurring during data migration with Pika-port (#2758)
- Fix an issue where the RsynClient did not handle failures after an abnormal exit, resulting in incomplete data during full replication (#2756)
- Fix an issue where Pika could not be expanded in batches (#2746)
- Corrected uninitialized parameters in slotsscan and bgsave commands to ensure proper balancing (#2745)
- Fix an issue where incorrect return values from the SlotMigrate command could interrupt data migration (#2741)
- Fix an issue where the RedisCache layer could cause inconsistencies between the database and the cache due to not using the TTL parsed by the storage layer (#2729)
- Fix an issue where Stream-type data could not be compacted by RocksDB, causing expired data to persist (#2724)
- Fix an issue where ACL authentication might fail sporadically (#2714)
- Fixed an issue where Pika cmdID assignment in the Cmd initialization function could cause data race during concurrent construction (#2692)
- Fixed a potential race condition in Spop when writing binlog (#2674)
- Fixed a data race issue in server_stat (#2671)
- Enhanced the full sync process to automatically retry after a timeout in multi-DB environments (#2667)
- Fixed a potential window crash issue under timeout scenarios in multi-DB master-slave environments (#2666)
- Fixed repeated unlocking issues in master-slave sync rate limiting logic (#2657)
📚 Documentation:
- docs:add 355 changelog (#2867)
- docs: add platform rocky linux (#2859)
- fix: revised TimerTaskManager and add some comments (#2776)
🧹 Updates:
- fix: blpop/brpop don't update cache (#2858)
- fix: Revert change storage ttl time from seconds to milliseconds and clear space in CI after compile (#2853)
- test: fix multi bug and compatible ACL test (#2815)
- feat: add a new test env (rocky linux) in github ci. (#2806) (#2823)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.5-alpha
📒 Documentation: PikiwiDB
**Full Change...
v4.0.0
🚀 New Features:
- feat:Added TCL tests for Pika Geo data type and fixed defects found during testing.(#2753)
- feat: Pika now supports compilation and packaging on the FreeBSD14 platform.(#2711)
- feat:Pika thread reorganization to avoid starting too many unnecessary threads, Threads are named for easier issue localization. (#2697)
- feat:Codis supports the info command, allowing querying of Codis-proxy's info information. (#2688)
- feat:Codis-proxy adds new monitoring metrics such as P99 and P95 response times. (#2668)
- Added Pika benchmarking metrics to improve benchmarking efficiency and output visualized statistical charts.(#2663)
- Pika master-slave replication adds a new monitoring metric repl_connect_status to more clearly and accurately determine the current status of master-slave replication.(#2638 )
- Pika does not support duplicate keys of different types. Writing a duplicate key returns an invalid type error.(#2609 )
- feat: Added support for partition index filtering. (#2601 )
- feat: Pika supports the third-generation storage engine Floyd, optimizing the use of multiple rocksdb instances, the use of Blobs, and the cleanup of expired data to improve the read and write performance of Pika (#2413)
🐛 Fixes:
- Fixed an issue with parsing the config parameter min-blob-size when it includes units.(#2767)
- Fixed an issue with abnormal return values in ZREVRANK.(#2763 )
- Fixed an error occurring during data migration with Pika-port.(#2758)
- Fixed an issue causing the Dbsize command to crash at runtime due to buffer overrun on heap allocation.(#2749)
- Fixed an issue where multiple slaves connecting to the master during batch scaling could cause incomplete data on some slave nodes due to multiple bgsave operations in a short time.(#2746)
- Corrected uninitialized parameters in slotsscan and bgsave commands to ensure proper balancing.(#2745)
- Fixed an issue in Slotmigrate where return values were set incorrectly, terminating data migration in exceptional scenarios. (#2741)
- Fixed an issue in Mget where not using the parsing ttl function caused some keys' ttl not to be updated, leading to data inconsistencies.(#2730)
- Fixed an issue where the pkpatternmatchdel command caused anomalies in stream data deletion due to incorrect usage.(#2726)
- Fixed an issue where pkpatternmatchdel could not correctly delete the corresponding keys.(#2717)
- Fixed an ACL password verification error.(#2714)
- Fixed an issue where the Keyspace command did not count Stream type data. (#2705)
- Customized processing logic for some commands to avoid binlog write issues that caused binlog parsing failures on slave nodes. (#2763)
- Fixed an issue where Pika cmdID assignment in the Cmd initialization function could cause data race during concurrent construction.(#2692)
- Fixed an issue where ExpectedStale did not consider String types, causing incorrect returns if there were expired String type keys.(#2682)
- Fixed a potential race condition in Spop when writing binlog.(#2674)
- Added error messages for unreasonable db instance settings.(#2672)
- Fixed a data race issue in server_stat.(#2671)
- Enhanced the full sync process to automatically retry after a timeout in multi-DB (#2667)
- Fixed a potential window crash issue under timeout scenarios in multi-DB master-slave environments.(#2666)
- Fixed repeated unlocking issues in master-slave sync rate limiting logic.(#2675)
- Release now supports automatic packaging of binary compilation packages for CentOS7 and CentOS8 platforms.(#2635)
- Fixed an issue where the getrange command on the Codis side did not return the expected. (#2601 )
- Solve the issue where failing to destruct 'iter' causes 'pkpatternmatchdel' not to delete 'iter' before returning, potentially leading to RocksDB perpetually referencing a version, causing data inconsistency.(#2785)
🧹Improvement:
- Updated the Pika Docker Readme to allow deploying Pika services in Docker according to the Readme. (#2743)
- Improved query-caching mechanisms to reduce redundant meta value queries, enhancing both read and write performance of Pika services.(#2735)
- Supports dynamic adjustment of more RocksDB parameters. Users can adjust parameters according to different business usage scenarios to improve Pika's read and write performance.(#2728)
- Isolated types for HyperLogLog and String to ensure clear distinction between HyperLogLog and String operations.(#2720)
- Updated PR title validation to disallow Chinese characters at the end of titles. (#2718)
- Refactored the master-slave synchronization thread model for slave nodes in master-slave replication mode to minimize binlog consumption blocking issues.(#2638)
- Added dynamic adjustment parameters for RocksDB Compaction strategy, allowing users to adjust the strategy based on their business needs to reduce the performance impact of Compaction operations.(#2538)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v4.0.0
📒 Documentation: PikiwiDB
Full Changelog: v3.5.4...v4.0.0
Thanks to @AlexStocks, @Mixficsol, @baerwang, @chejinge, @cheniujh, @chienguo, @guangkun123, @gukj-spel, @longfar-ncy, @lqxhub, @luky116, @saz97 and @wangshao1 for making this release possible.
Release v3.5.4
🚀 New Features:
- Support for dynamic adjustment of full synchronization speed limit parameters rsync-timeout-ms and throttle-bytes-per-second(#2633)
- Display the results of info key space 1 in info all and show it on the monitoring interface (#2603)
- Pika disk I/O speed limit parameters support OnlyRead, OnlyWrite, ReadAndWrite, with the default being OnlyWrite(#2599)
- feat: The INFO command is time-consuming and optimized to reduce the frequency of disk checks (#2554)
Improvement
- Added Go tests for the slotsmigrate(#2576)
- Optimization of INFO command execution time, reducing disk check frequency (#2554)
- Added Redis tcl tests for five basic data types commands (#2527)
🐛 Fixes:
- Fixed an issue where using Pika Operater could result in uneven slots distribution(#2651)
- Fixed an issue where the Codis dashboard could not correctly update the master instance status(#2650)
- Fixed a master-slave synchronization anomaly caused by Redis transaction binlog parsing failure(#2642)
- Fixed an issue where starting Pika Exporter without parameters caused startup failure(#2640)
- Fixed an issue where using Pika Operator to start a Codis-proxy cluster caused a panic(#2633)
- Fixed an issue where the cp command failed during automated tests of binaries compiled in CI (#2614)
- Fixed an issue where an uninitialized variable caused cache startup failure(#2613)
- Fixed the abnormal function of dynamically modifying parameters of userpass and userblacklist(#2600)
- Fix the problem of inconsistent scard sscan results(#2596)
- Fix the problem that when max-rsync-parallel-num is greater than 4, slave will coredump during master-slave replication(#2595)
- Adjust the number of thread pool threads that are not commonly used to avoid performance loss due to idle running(#2590)
- Fix the problem of Pika transaction edge test case not passing(#2586)
- change cache-model to cache-mode(#2585)
- Fix the problem of info all deadlock after using info keyspace(#2584)
- Solve the problem of incompatibility between 353 and 352 extreme scenarios caused by modifying the dictionary order of zsetscorekey comparatorimpl(#2583)
- Fix compact deadlock problem(#2581)
- Update pika version used by Pika Operater(#2572)
- Fix the problem of abnormal blockcache value after config rewrite(#2561)
- Fixed the problem of incorrect value after slotmigrate config rewrite(#2548)
- Fix the problem that spop may cause inconsistency between master and slave data(#2541)
- Fix the problem of out of bounds in CloseFd(it->second[i])(#2539)
- Fix the potential deadlocks in Flushall and FlushDB, and remove the FlushSubDB interface(#2533)
- Add a parameter to control whether to clean up data files generated by TCL tests, preventing obsolete data from occupying disk space(#2507)
📒 Documentation: PikiwiDB
Full Changelog: v3.5.3...v3.5.4
Thanks to @Mixficsol, @baerwang, @chejinge, @chenbt-hz, @cheniujh, @euvre and @wangshao1 @vacheli @XiaoLiang2333@Polaris3003 @TheCandle for making this release possible.
Release v3.5.4-rc1
🚀 New Features:
- feat: The INFO command is time-consuming and optimized to reduce the frequency of disk checks (#2554)
🐛 Fixes:
- Fixed the abnormal function of dynamically modifying parameters of userpass and userblacklist (#2600)
- Fix the problem of inconsistent scard sscan results (#2596)
- Fix the problem that when max-rsync-parallel-num is greater than 4, slave will coredump during master-slave replication (#2595)
- Adjust the number of thread pool threads that are not commonly used to avoid performance loss due to idle running(#2590)
- Fix the problem of Pika transaction edge test case not passing(#2586)
- change cache-model to cache-mode(#2585)
- Fix the problem of
info all
deadlock after using info keyspace(#2584) - Solve the problem of incompatibility between 353 and 352 extreme scenarios caused by modifying the dictionary order of zsetscorekeycomparatorimpl(#2583)
- Fix compact deadlock problem(#2581)
- Update pika version used by
Pika-operater
(#2572) - Fix the problem of abnormal blockcache value after config rewrite(#2561)
- Fixed the problem of incorrect value after slotmigrate config rewrite(#2548)
- Fix the problem that spop may cause inconsistency between master and slave data(#2541)
- Fix the problem of out of bounds in CloseFd(it->second(i))(#2539)
- Fixed a potential deadlock in
Flushall
andFlushDB
due to the locking order, and deleted the FlushSubDB interface(#2533) - Add test cases for the five basic data types commands in tcl(#2527)
- Add a parameter to control whether to clean up data files generated by Tcl tests, preventing obsolete data from occupying disk space(#2507)
🧹 Updates:
- feat:add slotmigrate test (#2576)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.4-rc1
📒 Documentation: PikiwiDB
Full Changelog: v3.5.3...v3.5.4-rc1
Thanks to @Mixficsol, @baerwang, @chejinge, @chenbt-hz, @cheniujh, @euvre and @wangshao1 for making this release possible.
Release v3.5.3
🚀 New Features:
- feat: Pika supports ACL(#2013)
- feat: Automatically resume service when Codis dashboard coroutine panics(#2349)
- feat: Pika cache adds bimap data type.(#2253)
- feat: Delete the remaining Slots in Sharing mode. There is only DB under Pika, and there are multiple DBs under one Pika.(#2251)
- feat: Pika exporter exposes cache-related data collection indicators.(#2318)
- feat: Pika supports separation of fast and slow commands.(#2162)
- feat: After pika executes bgsave, retain the unix timepoint.(#2167)
- feat: Pika supports dynamic configuration of the disable_auto_compations parameter.(#2257)
- feat: Pika supports Redis Stream.(#1955)
- feat: Pika supports large key analysis tools(#2195)
- feat: Pika supports dynamic adjustment of Pika cache parameters([#2253(https://github.com//pull/2253))
- feat: Updated Pika benchmark tool to support more interface stress tests.([#2222 (https://github.com//pull/2222))
- feat: Pika Operator supports automatic expansion of pika clusters.(#2121)
- feat: Add the CompactRange command to support compacting keys within a certain range.(#2163)
- feat: Add small time cost compaction policy.(#2172)
- feat: Upgrade RocksDB version to v8.7.3.(#2157)
- feat: Pika distributed cluster Codis proxy adds new observable indicators.(#2199)
- feat: Pika distributed cluster supports automatic failover.(#2386)
- feat: let pika slave support Redis transaction (#2441)
- feat: add namespace for kubeblocks pika cluster helm chart (#2480)
- feat: add multi key slot migrate (#2486)
- feat: support dynamic set max-conn-rbuf-size (#2434)
- feat: support deploying pika_exporter components using kubeblocks (#2473)
- feat: support building pika_exporter docker image (#2451)
- feat: add issue translation robot (#2478)
- feat: add Rename Command (#2455)
- feat: support dynamic set max-conn-rbuf-size (#2434)
- feat: pika supports kubeblocks component definition api (#2411)
🐛 Fixes:
- fix: delete cache log (#2517)
- fix: binlog is written repeatedly && not delete cache (#2485)
- fix: dbsize caculate error (#2494)
- fix: delete migrate log (#2489)
- fix: fix github action CI failure (#2491)
- fix: move Dockerfile and build_docker.sh into docker subdirectory (#2458)
- fix: no namespace in configmap, so remove the namespace (#2474)
- fix: support saving pika config to hostpath (#2476)
- fix: support removing pika instance from codis dashboard before pod stop (#2475)
- fix: acl forward compatible (#2459)
- fix: delete reduntant lock in storage (#2372)
- fix: linux arm64 spelling mistake in Makefile of pika_exporter(#2456) (#2457)
- fix: after full synchronization fails, full synchronization will be skipped directly(#2433) (#2439)
- fix: return kErr status when Master handle MetaRsync reqeust if db is not exist or doing bgsave(#2289) (#2437)
- fix: ACL user authentication errors (#2449)
- fix: change the full-sync and incremental-full failure alert message (#2430)
- fix: ci replication go test failed problem (#2435)
- fix: Fix the problem of possible slave_key conflict (#2431)
- fix: clear old pika operator (#2405)
- fix: fix variable init error (#2421)
- fix: slave instance apply db not used lock (#2409)
- fix: master coredump when slotmigrate some slots (#2415)
- fix: ci replication go test failed problem (#2435)
- fix: no namespace in configmap, so remove the namespace (#2474)
- fix: Fixed an issue where Pika would accidentally delete dump files during full replication from the node.(#2377)
- fix: Fixed the processing logic after the slave node receives an abnormal response packet from the master during the master-slave replication process.(#2319)
- fix: Call disable compaction when pika executes the shutdown command to improve the process exit speed. (#2345)
- fix: Fix the problem of inaccurate Codis-dashboard Redis Memory value.(#2337)
- fix: Fixed the issue where rsync deletes temporary files with incorrect paths and fails to delete them, causing rocksdb to fail to open.(#2186)
- fix: Fixed the problem that the compact, bgsave, and info keyspace commands did not specify the db name, resulting in some coredump commands.(#2194)
- fix: Codis dashboard uses info replication instead of info command to search master ip to reduce the performance impact on Pika. (#2198)
- fix: Fix Pika cache to use edge cases to solve the problem of cache and DB data inconsistency in some scenarios.(#2225)
- fix: Fixed the issue where Segmentation fault would be reported when the dump folder is empty.(#2265)
- fix: Fixed the problem that some command caches did not take effect due to flag calculation errors.(#2217)
- fix: Fixed the problem that in master-slave replication mode, after the master instance flushdb, the slave instance cannot be accessed due to deadlock.(#2249)
- fix: Fixed the issue where some commands did not judge the return value of RocksDB.(#2187)
- fix: Fix the problem of info keyspace returning wrong results.(#2369)
- fix: Standard function return value and initial value.(#2176)
- fix: Fixed the problem of inaccurate network monitoring indicator statistics.(#2234)
- fix: Fixed an issue where some parameters in configuration file loading were abnormal.(#2218)
- fix: Fix Codis dashboard cpu used 100%.(#2393)
- fix: Fix the problem of abnormal display of master and slave roles in Codis fe of pika.(#2387)
📚 Documentation:
- docs: change README_CN.md README.md (#2406)
🧹 Updates:
- ci: cleanup code (#2479)
- chore: build macos del python deps (#2401)
- chore(deps): bump google.golang.org/protobuf from 1.30.0 to 1.33.0 in /tools/pika_exporter (#2511)
- test: add codis integration test (#2502)
- test: add acl test (#2495)
- test: add tcl test (#2497)
- test: add replication-test-go (#2496)
- test: add rename go test (#2468)
- test: add non-cached and cached integration test (#2467)
- test: add tcl go test (#2464)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.3
📒 Documentation: PikiwiDB
Thanks to @578223592, @AlexStocks, @Mixficsol, @u6th9d, @ForestLH, @KKorpse, @MalikHou, @chejinge, @chengyu-l, @gxlct008, @hero-heng, @jettcc, @panlei-coder, @sjcsjc123, @tedli, @wanghenshui, @HappyUncle, @JackGod001, @Y-Rookie, @baerwang, @baixin01, @chenbt-hz, @dingxiaoshuai123, @Ruipu-Chang, @callme-taota, @Summer-0827, @lqxhub, @luky116, @machinly and @wangshao1 for making this release possible.
Release v3.5.3-alpha
🚀 New Features:
- feat:distable compaction during shutdown (#2345)
- feat: cache metrics (#2318)
- feat: separation of fast and slow commands (#2162)
- feat: pika support acl (#2013)
- feat: update benchmark_client to support more api commands (#2222)
- feat: Dynamically set disable_auto_compaction (#2257)
- feat: add big key tool (#2195)
- feat: Stream base commands (#1955)
- feat: Exporter for Proxy (#2199)
- feat: add lastsave cmd (#2167)
🚀 Enhancement
- feat: recover it when the goroutine caused some panic (#2349)
- feat: move streams implementation to storage layer. (#2242)
- feat:check repl state to response immediately if full sync not finished (#2197)
🐛 Fixes:
- fix: update 'info replication' command output format about db which add a colon #2375 (#2384)
- fix: keyspace's result wrong (#2369)
- fix: fix delete dump file while still in use (#2377)
- fix: rename zset_cache_start_pos -> zset_cache_start_direction (#2358)
- fix: handle rsync response error in slave side (#2319)
- fix: delete invalid primary/secondary synchronization code (#2334)
- fix:bitmap cache (#2253)
- fix: Redis Keys / Redis Memory not shown in topom dashboard (#2337)
- fix: fix version compare error in ZSetsScoreKeyComparatorImpl (#2339)
- fix: command CONFIG SET * reply array length error(#2320) (#2336)
- fix: delete slot (#2251)
- fix: duplicate closing files(#2304) (#2311)
- fix: read acl file crash on Mac OS (#2310)
- fix: without close file(#2301) (#2314)
- fix: bug with repeat key (#2306)
- fix: compilation fails (#2317)
- fix: If the localFileMap is empty, do not continue execution(#2303) (#2312)
- fix: RsyncClient::ThreadMain not close file(#2302) (#2313)
- fix: if resp->code() != RsyncService::kOk should set SyncSlaveSlot repl_state_ to kError(#2299) (#2315)
- fix: without errno in log or status when open and read file failed(#2287, #2292) (#2307)
- fix: return wrong response code when DBSync request SyncMasterSlot not exist(#2290, #2293) (#2308)
- fix :fix acl complie (#2294)
- fix: delete binglog dead code (#2274)
- fix: upgrade image tags and etcd volumeClaimTemplates (#2281)
- fix: incorrect initialization sequence about pika role and cmdstat_map(#2235) (#2278)
- fix: gcc version must be greater than or equal to 9 (#2275) (#2276)
- fix: segment fault when dump dir is empty (#2265)
- fix: cache layer crash and data confusion (#2217)
- fix:fix bug that the slave stuck while run flushdb (#2249)
- fix:cache bug && add cache test (#2225)
- fix: delete actions cache (#2236)
- fix: network statistic input bytes is not right in some case(#2223) (#2224) (#2234)
- fix:fix Zpopmaxbugs return value not same as redis (#2188)
- fix: network statistic input bytes is not right in some case(#2223) (#2224)
- fix:fix txn go test error (#2219)
- fix: fix configuration loading error (#2218)
- fix: Slow log timestamp format is inconsistent with Redis (#2212)
- fix:build time (#2211)
📚 Documentation:
🧹 Updates:
- fix: update 'info replication' command output format about db which add a colon #2375 (#2384)
- feat: update benchmark_client to support more api commands (#2222)
- fix:cache bug && add cache test (#2225)
- fix:fix txn go test error (#2219)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.3-alpha
📒 Documentation: PikiwiDB
Full Changelog: v3.5.2...v3.5.3-alpha
Thanks to @578223592, @AlexStocks, @ForestLH, @KKorpse, @MalikHou, @Mixficsol, @baerwang, @chejinge, @chenbt-hz, @chengyu-l, @dingxiaoshuai123, @gxlct008, @hero-heng, @jettcc, @lqxhub, @panlei-coder, @sjcsjc123, @tedli, @wanghenshui and @wangshao1 for making this release possible.