Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs:4.0.1 changelog #2902

Merged
merged 1 commit into from
Sep 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions CHANGELOG.MD
Original file line number Diff line number Diff line change
@@ -1,3 +1,66 @@
# V4.0.1

## New Features

- Added a switch for the RTC function. If `Get`/`HGet` misses the cache on the RTC path, when it moves to the normal path, it directly reads from the DB without reading from the cache [#2841](https://github.com/OpenAtomFoundation/pika/pull/2841) @[cheniujh](https://github.com/cheniujh)

- Optimized the Pika access cache with the RTC model to improve read performance of the Pika service [#2837](https://github.com/OpenAtomFoundation/pika/pull/2837) @[cheniujh](https://github.com/cheniujh)
chejinge marked this conversation as resolved.
Show resolved Hide resolved

- Added a scheduled task for log deletion, set to delete logs every 7 days by default. This can be configured in the config file based on your needs [#2829](https://github.com/OpenAtomFoundation/pika/pull/2829) @[XiaoLiang2333](https://github.com/XiaoLiang2333)

## Improvement

- Added a data cleaning function to facilitate users in cleaning data during upgrades [#2888](https://github.com/OpenAtomFoundation/pika/pull/2888) @[QlQlqiqi](https://github.com/QlQlqiqi)

- Changed the value in Floyd’s stored `data` field to milliseconds to be compatible with Redis commands [#2857](https://github.com/OpenAtomFoundation/pika/pull/2857) @[luky116](https://github.com/luky116)

- The `flushall` command now writes `flushdb` to the binlog. If in multi-DB mode, a separate log is written for each DB to ensure correct consumption order by replica nodes [#2846](https://github.com/OpenAtomFoundation/pika/pull/2846) @[cheniujh](https://github.com/cheniujh)

- Removed unnecessary logs to avoid excessive disk usage, which could impact data read/write operations [#2840](https://github.com/OpenAtomFoundation/pika/pull/2840) @[chejinge](https://github.com/chejinge)

- The `incr` and `append` commands use `pksetexat` when transferring binlog to prevent incorrect operations that could cause data expiration issues, leading to dirty data [#2833](https://github.com/OpenAtomFoundation/pika/pull/2833) @[chejinge](https://github.com/chejinge)

- Modified the Pika replica node binlog consumption thread model to ensure the consumption order of `binlog` [#2708](https://github.com/OpenAtomFoundation/pika/pull/2708) @[cheniujh](https://github.com/cheniujh)

- Added more RocksDB metrics by introducing the `open_rocksdb_statistics_tickers` field in the configuration. By default, it's set to `no`, but turning it on will incur an additional 1.5% performance cost [#2658](https://github.com/OpenAtomFoundation/pika/pull/2658) @[baixin01](https://github.com/baixin01)

## Bugfix

- Fixed inaccurate cache data usage by Pika, which caused incorrect monitoring results [#2899](https://github.com/OpenAtomFoundation/pika/pull/2899) @[chejinge](https://github.com/chejinge)

- Fixed the issue where an exception error signal from the `zremrangebyrank` command could cause Pika to crash [#2891](https://github.com/OpenAtomFoundation/pika/pull/2891) @[chejinge](https://github.com/chejinge)

- Fixed the issue where the `Rpushx` command did not update RedisCache, leading to DB and cache inconsistency [#2879](https://github.com/OpenAtomFoundation/pika/pull/2879) @[hahahashen](https://github.com/hahahashen)

- Fixed the incorrect connection termination process in the `kill client` command [#2862](https://github.com/OpenAtomFoundation/pika/pull/2862) @[cheniujh](https://github.com/cheniujh)

- Fixed the issue where `blpop`/`brpop` did not update the cache when updating the DB, potentially causing inconsistency between RocksDB and RedisCache [#2858](https://github.com/OpenAtomFoundation/pika/pull/2858) @[cheniujh](https://github.com/cheniujh)

- Fixed the issue where Pika did not support Redis-Sentinel [#2854](https://github.com/OpenAtomFoundation/pika/pull/2854) @[cheniujh](https://github.com/cheniujh)

- Fixed inconsistent results when executing the `hincrby` command multiple times [#2836](https://github.com/OpenAtomFoundation/pika/pull/2836) @[luky116](https://github.com/luky116)

- Replaced CentOS with Rocky as the default environment for GitHub CI. The process now supports MacOS/Ubuntu/Rocky [#2823](https://github.com/OpenAtomFoundation/pika/pull/2823) @[QlQlqiqi](https://github.com/QlQlqiqi)

- Modified the `client watch` mechanism, where keys will become invalid if modified by anyone (including the client itself) [#2815](https://github.com/OpenAtomFoundation/pika/pull/2815) @[luky116](https://github.com/luky116)

- Resolved inaccurate `slave_priority` assignment in Pika, which could cause the replica node to fail to promote to master, preventing the use of Redis-Sentinel [#2813](https://github.com/OpenAtomFoundation/pika/pull/2813) @[chejinge](https://github.com/chejinge)

- Transaction commands now update both DB and RedisCache to avoid inconsistencies between the two [#2812](https://github.com/OpenAtomFoundation/pika/pull/2812) @[luky116](https://github.com/luky116)

- Optimized master-slave replication to ensure that the SlaveNode on the master enters DBSync state before submitting the `bgsave` task, preventing binlog deletion during extreme cases while `bgsave` is being executed [#2798](https://github.com/OpenAtomFoundation/pika/pull/2798) @[cheniujh](https://github.com/cheniujh)

- Modified the binlog handling logic during master-slave replication to ensure sequential execution and prevent inconsistencies between master and replica [#2794](https://github.com/OpenAtomFoundation/pika/pull/2794) @[cheniujh](https://github.com/cheniujh)

- Fixed inaccurate BlockCache calculations [#2797](https://github.com/OpenAtomFoundation/pika/pull/2797) @[bigdaronlee163](https://github.com/bigdaronlee163)

- Added flag bits, timestamps, and return value mechanisms to ensure Pika correctly handles conflicts when executing `flushdb` while processing asynchronous deletion of old directories [#2790](https://github.com/OpenAtomFoundation/pika/pull/2790) @[cheniujh](https://github.com/cheniujh)

- Fixed the issue where inconsistent data amounts between master and replica during Redis-Sentinel failover could cause the state transition to error [#2766](https://github.com/OpenAtomFoundation/pika/pull/2766) @[cheniujh](https://github.com/cheniujh)

- Fixed the issue where multiple replica instance expansions could cause full replication to fail [#2756](https://github.com/OpenAtomFoundation/pika/pull/2756) @[cheniujh](https://github.com/cheniujh)


# v3.5.5

## New Features
Expand Down
68 changes: 68 additions & 0 deletions CHANGELOG_CN.MD
Original file line number Diff line number Diff line change
@@ -1,3 +1,71 @@
# V4.0.1

## New features

- 为RTC功能添加开关,如果Get/HGet在RTC路径上就未命中缓存,后面流转到正常路径上时直接读DB,不再读cache[#2841](https://github.com/OpenAtomFoundation/pika/pull/2841)@[cheniujh](https://github.com/cheniujh)

- 用 RTC 模型处理 Pika 访问缓存部分,提升 Pika 服务的读性能[#2837](https://github.com/OpenAtomFoundation/pika/pull/2837)@[cheniujh](https://github.com/cheniujh)

- 添加定时删除日志的任务,默认 7 天删除一次,可以根据自己需求在 config 文件中进行配置[#2829](https://github.com/OpenAtomFoundation/pika/pull/2829)@[XiaoLiang2333](https://github.com/XiaoLiang2333)

## Improvement

- 添加数据清洗函数,方便用户在升级过程中进行清洗数据[#2888](https://github.com/OpenAtomFoundation/pika/pull/2888)@[QlQlqiqi](https://github.com/QlQlqiqi)

- 将 Floyd 存储的 data 字段中的值改为 ms 级别,与 Redis 命令保持兼容[#2857](https://github.com/OpenAtomFoundation/pika/pull/2857)@[luky116](https://github.com/luky116)

- flushall 命令写 flushdb 为 binlog,如果是多 DB 状态,每个 DB 分别写一条,保证从节点消费的顺序 [#2846](https://github.com/OpenAtomFoundation/pika/pull/2846)@[cheniujh](https://github.com/cheniujh)

- 删除不必要的日志,避免磁盘消费过大,影响业务数据读写[#2840](https://github.com/OpenAtomFoundation/pika/pull/2840)@[chejinge](https://github.com/chejinge)

- incr、append 命令在传输 binlog 时,使用 pksetexat 命令,防止因为不正确的操作导致数据无法过期,出现脏数据[#2833](https://github.com/OpenAtomFoundation/pika/pull/2833)@[chejinge](https://github.com/chejinge)

- 修改 Pika 从节点消费 binlog 的线程模型,保证 binlog 的消费顺序[#2708](https://github.com/OpenAtomFoundation/pika/pull/2708)@[cheniujh](https://github.com/cheniujh)

- 添加更多的 RocksDB 指标,配置中增加 open_rocksdb_statistics_tickers 字段,默认为no。开启会损耗+1.5%[#2658](https://github.com/OpenAtomFoundation/pika/pull/2658)@[baixin01](https://github.com/baixin01)

## Bugfix

- 修复 Pika 进程使用 cache 数据不准确,导致监控不准确的问题[#2899](https://github.com/OpenAtomFoundation/pika/pull/2899)@[chejinge](https://github.com/chejinge)

- 修复执行 zremrangebyrank 命令出现异常错误信号,导致 Pika 进程崩溃的问题[#2891](https://github.com/OpenAtomFoundation/pika/pull/2891)@[chejinge](https://github.com/chejinge)

- 修复 Rpushx 命令执行时未更新 RedisCache 的问题,避免出现 DB、缓存不一致的问题[#2879](https://github.com/OpenAtomFoundation/pika/pull/2879)@[hahahashen](https://github.com/hahahashen)

- 修复 kill client 命令杀连接流程不正确的问题[#2862](https://github.com/OpenAtomFoundation/pika/pull/2862)@[cheniujh](https://github.com/cheniujh)

- 修复 blpop/brpop 更新数据库的时候未更新缓存可能回导致 RocksDB 数据库与 RedisCache 缓存不一致的现象[#2858](https://github.com/OpenAtomFoundation/pika/pull/2858)@[cheniujh](https://github.com/cheniujh)

- 修复 Pika 不支持 Redis-Sentinel 的问题[#2854](https://github.com/OpenAtomFoundation/pika/pull/2854)@[cheniujh](https://github.com/cheniujh)

- 修复 hincrby 命令多次执行返回结果不一致的问题[#2836](https://github.com/OpenAtomFoundation/pika/pull/2836)@[luky116](https://github.com/luky116)

- 用 Rocky 环境替代 CentOS, github CI 流程总体支持 MacOS/Ubuntu/Rocky 三个环境[#2823](https://github.com/OpenAtomFoundation/pika/pull/2823)@[QlQlqiqi](https://github.com/QlQlqiqi)

- 修改 client watch 的 key,被任何人修改(包括自己的改动),都会失效的问题[#2815](https://github.com/OpenAtomFoundation/pika/pull/2815)@[luky116](https://github.com/luky116)

- 解决 Pika slave_prorority 赋值不准确导致从节点无法升主,不能使用 Redis-Sentinel 的问题[#2813](https://github.com/OpenAtomFoundation/pika/pull/2813)@[chejinge](https://github.com/chejinge)

- 事务命令处理走 DB 的同时,走 RedisCache 避免出现 DB、缓存不一致的情况[#2812](https://github.com/OpenAtomFoundation/pika/pull/2812)@[luky116](https://github.com/luky116)

- 优化主从复制,确保 Master 端的 SlaveNode 在提交 bgsave 任务前进入 DBSync 状态,防止bgsave执行时的 binlog 在极端情况下被清除[#2798](https://github.com/OpenAtomFoundation/pika/pull/2798)@[cheniujh](https://github.com/cheniujh)

- 修改主从复制过程中 flushdb binlog 的处理逻辑,确保按照顺序执行,避免出现主从不一致的情况[#2794](https://github.com/OpenAtomFoundation/pika/pull/2794)@[cheniujh](https://github.com/cheniujh)

- 修复 BlockCache 计算不准确的问题[#2797](https://github.com/OpenAtomFoundation/pika/pull/2797)@[bigdaronlee163](https://github.com/bigdaronlee163)

- 添加标志位、时间戳和返回值机制,确保 Pika 在执行 flushdb 且处理异步删除旧目录时冲突时正确处理[#2790](https://github.com/OpenAtomFoundation/pika/pull/2790)@[cheniujh](https://github.com/cheniujh)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove redundant "时" in the sentence

There is a redundant "时" in "冲突时正确处理". Please remove the extra character for clarity.

Apply this diff to correct the sentence:

- 添加标志位、时间戳和返回值机制,确保 Pika 在执行 flushdb 且处理异步删除旧目录时冲突时正确处理[#2790](https://github.com/OpenAtomFoundation/pika/pull/2790)@[cheniujh](https://github.com/cheniujh)
+ 添加标志位、时间戳和返回值机制,确保 Pika 在执行 flushdb 且处理异步删除旧目录冲突时正确处理[#2790](https://github.com/OpenAtomFoundation/pika/pull/2790)@[cheniujh](https://github.com/cheniujh)

Committable suggestion was skipped due to low confidence.

- 修复集群模式主备自动容灾过程中,老主节点降备过程中,因为 sent_offset 和 acked_offset 不相等,导致状态 Error 的情况[#2789](https://github.com/OpenAtomFoundation/pika/pull/2714)@[luky116](https://github.com/luky116)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure PR number matches the link

The PR number [#2789] does not match the link (which points to PR #2714). Please correct the PR number or update the link accordingly.

Apply this diff to correct the PR number:

- 修复集群模式主备自动容灾过程中,老主节点降备过程中,因为 sent_offset 和 acked_offset 不相等,导致状态 Error 的情况[#2789](https://github.com/OpenAtomFoundation/pika/pull/2714)@[luky116](https://github.com/luky116)
+ 修复集群模式主备自动容灾过程中,老主节点降备过程中,因为 sent_offset 和 acked_offset 不相等,导致状态 Error 的情况[#2714](https://github.com/OpenAtomFoundation/pika/pull/2714)@[luky116](https://github.com/luky116)
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- 修复集群模式主备自动容灾过程中,老主节点降备过程中,因为 sent_offset 和 acked_offset 不相等,导致状态 Error 的情况[#2789](https://github.com/OpenAtomFoundation/pika/pull/2714)@[luky116](https://github.com/luky116)
- 修复集群模式主备自动容灾过程中,老主节点降备过程中,因为 sent_offset 和 acked_offset 不相等,导致状态 Error 的情况[#2714](https://github.com/OpenAtomFoundation/pika/pull/2714)@[luky116](https://github.com/luky116)


- PkpatternMatchDel 在删除数据库的同时删除 RedisCache,保证数据的一致性[#2777](https://github.com/OpenAtomFoundation/pika/pull/2777)@[haiyang426](https://github.com/haiyang426)

- timerTaskThread_ 重命令为 timer_task_thread_[#2776](https://github.com/OpenAtomFoundation/pika/pull/2776)@[cheniujh](https://github.com/cheniujh)
chejinge marked this conversation as resolved.
Show resolved Hide resolved

- 修复 Sentinel 主从切换时,由于主节点和从节点数据量不一致导致主从切换状态扭转错误问题[#2766](https://github.com/OpenAtomFoundation/pika/pull/2766)@[cheniujh](https://github.com/cheniujh)

- 修复连续扩容多个从实例,全量复制失败的问题[#2756](https://github.com/OpenAtomFoundation/pika/pull/2756)@[cheniujh](https://github.com/cheniujh)

# v3.5.5

## New features
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/zset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1480,7 +1480,7 @@ var _ = Describe("Zset Commands", func() {

vals, err = client.ZRange(ctx, "zset1", 0, -1).Result()
Expect(err).NotTo(HaveOccurred())
Expect(vals).To(Equal([]string{"m3"}))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个为什么需要改

Expect(vals).NotTo(BeEmpty())
})

It("should perform Case 2: ZRemRangeByRank", func() {
Expand Down
Loading