Skip to content

Release v3.5.5

Compare
Choose a tag to compare
@github-actions github-actions released this 20 Aug 06:20
· 224 commits to unstable since this release

🚀 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 Changelog: v3.5.4...v3.5.5

Thanks to @QlQlqiqi, @VanessaXWGUO, @XiaoLiang2333, @baerwang, @baixin01, @bigdaronlee163, @chejinge, @cheniujh, @haiyang426, @saz97, @lqxhub ,@wangshao1, @Mixficsol and @luky116 for making this release possible.