Skip to content

Commit

Permalink
feat:4.0.2 changelog && add some test (#2977)
Browse files Browse the repository at this point in the history
* feat:add some test

---------

Co-authored-by: chejinge <[email protected]>
  • Loading branch information
chejinge and brother-jin authored Dec 18, 2024
1 parent 9966db7 commit f852dbd
Show file tree
Hide file tree
Showing 3 changed files with 138 additions and 2 deletions.
52 changes: 52 additions & 0 deletions CHANGELOG.MD
Original file line number Diff line number Diff line change
@@ -1,3 +1,55 @@
# V4.0.2

## New features

- 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](https://github.com/OpenAtomFoundation/pika/pull/2973) @[cheniujh](https://github.com/cheniujh)

- Added support for backup and recovery in master-slave mode for Pika-Operator. [#2968](https://github.com/OpenAtomFoundation/pika/pull/2968) @[buzhimingyonghu](https://github.com/buzhimingyonghu)

- 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 with `config get/set`. [#2964](https://github.com/OpenAtomFoundation/pika/pull/2964) @[cheniujh](https://github.com/cheniujh)

- Added the `repl_connect_status` metric to Pika info and integrated it into `pika_exporter` to facilitate monitoring of the replication status. [#2961](https://github.com/OpenAtomFoundation/pika/pull/2961) @[cheniujh](https://github.com/cheniujh)

- Upgraded `kubeblocks` to version 0.9, improving and optimizing Pika-Operator to simplify code and support instance scale-down. [#2860](https://github.com/OpenAtomFoundation/pika/pull/2860) @[XiaoLiang2333](https://github.com/XiaoLiang2333)

- Pika-Operator now supports starting in master-slave mode. See the README document for more details. [#2903](https://github.com/OpenAtomFoundation/pika/pull/2903) @[XiaoLiang2333](https://github.com/XiaoLiang2333)

- Added `keyspace_hits` and `keyspace_misses` metrics to `pika_exporter`, enabling users to monitor key hit rates. [#2579](https://github.com/OpenAtomFoundation/pika/pull/2579) @[chenbt](https://github.com/chenbt)

- RedisCache now avoids storing large keys to prevent excessive memory usage or the eviction of frequently accessed hot keys, which could impact performance. [#2557](https://github.com/OpenAtomFoundation/pika/pull/2557) @[QlQlqiqi](https://github.com/QlQlqiqi)

## Improvement

- Pika now supports dynamically modifying the `max-subcompactions` parameter to optimize the `compact` operation for L0 layers at runtime. [#2965](https://github.com/OpenAtomFoundation/pika/pull/2965) @[cheniujh](https://github.com/cheniujh)

- Improved the `log-retention-time` parameter to dynamically adjust the number of days for log retention. [#2963](https://github.com/OpenAtomFoundation/pika/pull/2963) @[cheniujh](https://github.com/cheniujh)

- Moved the `Pika-Migrate` code to the `tools` folder to simplify binary compilation in different environments for data migration. [#2941](https://github.com/OpenAtomFoundation/pika/pull/2941) @[chenbt-hz](https://github.com/chenbt-hz)

- Added Go tests for Pika complex data types and management commands to ensure service stability. [#2840](https://github.com/OpenAtomFoundation

- Updated the `actions/checkout` in GitHub Actions workflow to v5 for enhanced security and performance. [#2833](https://github.com/OpenAtomFoundation/pika/pull/2833) @[baerwang](https://github.com/baerwang)

- 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](https://github.com/OpenAtomFoundation/pika/pull/2557) @[QlQlqiqi](https://github.com/QlQlqiqi)

## Bugfix

- Fixed the `rpoplpush` command cache update issue, which caused inconsistency between the database and cache. [#2976](https://github.com/OpenAtomFoundation/pika/pull/2976) @[cheniujh](https://github.com/cheniujh)

- Fixed compatibility issues between different versions of Pika-Exporter, which caused excessive logging and wasted disk resources. [#2971](https://github.com/OpenAtomFoundation/pika/pull/2971) @[buzhimingyonghu](https://github.com/buzhimingyonghu)

- Adjusted the log level of `slowlog` to INFO to address the issue of triple logging, which consumed excessive disk space. [#2948](https://github.com/OpenAtomFoundation/pika/pull/2948) @[buzhimingyonghu](https://github.com/buzhimingyonghu)

- Improved CI stability by resolving specific failure issues. [#2937](https://github.com/OpenAtomFoundation/pika/pull/2937) @[chejinge](https://github.com/chejinge)

- Fixed an issue where Pika instances could not set administrator passwords independently. [#2920](https://github.com/OpenAtomFoundation/pika/issues/2920) @[buzhimingyonghu](https://github.com/buzhimingyonghu)

- 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](https://github.com/OpenAtomFoundation/pika/pull/2904) @[cheniujh](https://github.com/cheniujh)

- Fixed a cache inconsistency issue caused by the `zpopmin` command during deletion operations. [#2892](https://github.com/OpenAtomFoundation/pika/issues/2892) @[chejinge](https://github.com/chejinge)



# V4.0.1

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

## New features

- Pika 从实例执行完 slaveof no one 与主节点解除主从关系后,将 slaveof 信息持久化到配置文件中[#2973](https://github.com/OpenAtomFoundation/pika/pull/2973)@[cheniujh](https://github.com/cheniujh)

- Pika-Operater 主从模式支持数据备份和恢复的功能[#2968](https://github.com/OpenAtomFoundation/pika/pull/2968)@[buzhimingyonghu](https://github.com/buzhimingyonghu)

- 在配置文件中添加 log-net-activities 参数,支持动态关闭或者建立连接部分日志的打印,可以 config get/set动态调整[#2964](https://github.com/OpenAtomFoundation/pika/pull/2964)@[cheniujh](https://github.com/cheniujh)

- 将 Pika info 指标中提供的 repl_connect_status 加入到了 pika_exporter,方便运维同学对 Pika 的主从状态判断[#2961](https://github.com/OpenAtomFoundation/pika/pull/2961)@[cheniujh](https://github.com/cheniujh)

- 升级 kubeblocks 至 0.9 版本,对 Pika-operater 做升级和优化,简化代码,支持实例的缩容[#2860](https://github.com/OpenAtomFoundation/pika/pull/2860)@[XiaoLiang2333](https://github.com/XiaoLiang2333)

- Pika-Operater 支持拉起主从模式,拉起方式详见 readme 文档[#2903](https://github.com/OpenAtomFoundation/pika/pull/2903)@[XiaoLiang2333](https://github.com/XiaoLiang2333)

- Pika-Exporter 支持新增 keyspace_hits、keyspace_misses 指标,运维同学可以根据指标判断当前业务 key 的命中率[#2579](https://github.com/OpenAtomFoundation/pika/pull/2579)@[chenbt](https://github.com/chenbt)

- RedisCache 中不存储大 key, 避免占用内存过多或者存储大 key 将业务多次访问的热 key 淘汰掉,影响性能[#2557](https://github.com/OpenAtomFoundation/pika/pull/2557)@[QlQlqiqi](https://github.com/QlQlqiqi)

## Improvement

- Pika 支持动态修改 max-subcompactions 配置参数,可以对 L0 层的 compact 操作做运行时优化[#2965](https://github.com/OpenAtomFoundation/pika/pull/2965)@[cheniujh](https://github.com/cheniujh)

- 优化 log-retention-time 配置参数,可以动态调整日志保存的天数[#2963](https://github.com/OpenAtomFoundation/pika/pull/2963)@[cheniujh](https://github.com/cheniujh)

- 将 Pika-Migrate 的代码移除至 tools 文件夹下,方便不同环境编译二进制进行数据迁移[#2941](https://github.com/OpenAtomFoundation/pika/pull/2941)@[chenbt-hz](https://github.com/chenbt-hz)

- 为 Pika 复杂数据类型及管理命令添加 Go Test,保证服务的稳定性[#2840](https://github.com/OpenAtomFoundation/pika/pull/2901)@[tsinow](https://github.com/tsinow)

- 更新 GitHub Action 工作流中的 actions/checkout 为 v5, 增强安全性和性能[#2833](https://github.com/OpenAtomFoundation/pika/pull/2833)@[baerwang](https://github.com/baerwang)

- Pika 支持新的 compact 策略,增加最长时间未使用文件和最多删除条目文件的 compact 策略 ,提升 Pika 写性能[#2557](https://github.com/OpenAtomFoundation/pika/pull/2557)@[QlQlqiqi](https://github.com/QlQlqiqi)

## Bugfix

- 修复 rpoplpush 命令未更新缓存,导致数据库、缓存数据不一致的问题[#2976](https://github.com/OpenAtomFoundation/pika/pull/2976)@[cheniujh](https://github.com/cheniujh)

- 修复 Pika-Exporter 上下版本不兼容,导致 Exporter 日志打印过多浪费磁盘资源的问题[#2971](https://github.com/OpenAtomFoundation/pika/pull/2971)@[buzhimingyonghu](https://github.com/buzhimingyonghu)

- 将 slowlog 的日志级别调整成为 INFO,解决 Slowlog 同时打印三份,会导致磁盘占用过多的问题[#2948](https://github.com/OpenAtomFoundation/pika/pull/2948)@[buzhimingyonghu](https://github.com/buzhimingyonghu)

- 修复 CI 稳定性不通过的问题[#2937](https://github.com/OpenAtomFoundation/pika/pull/2937)@[chejinge](https://github.com/chejinge)

- 修复 Pika 实例无法单独设置管理员密码的问题[#2920](https://github.com/OpenAtomFoundation/pika/issues/2920)@[buzhimingyonghu](https://github.com/buzhimingyonghu)

- 修复 epoll 循环中 std::shared_ptr in_conn 对象的引用计数器的析构位置,确保 Pika 不会出现连接不及时关闭的现象[#2904](https://github.com/OpenAtomFoundation/pika/pull/2904)@[cheniujh](https://github.com/cheniujh)

- 修复 Zpopmin 命令执行删除操作时未更新缓存,导致数据库缓存不一致的问题[#2892](https://github.com/OpenAtomFoundation/pika/issues/2892)@[chejinge](https://github.com/chejinge)



# V4.0.1

## New features
Expand Down
36 changes: 34 additions & 2 deletions tests/integration/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1298,8 +1298,8 @@ var _ = Describe("List Commands", func() {
Expect(lpush.Val()).To(Equal(int64(4)))

getRes, err := client.Get(ctx, "list1").Result()
Expect(err).To(HaveOccurred()) // An error is expected since listkey is a list, not a string
Expect(getRes).To(Equal(""))
Expect(err).To(HaveOccurred()) // An error is expected since listkey is a list, not a string
Expect(getRes).To(Equal(""))

lrang := client.LRange(ctx, "list1", 0, -1)
Expect(lrang.Err()).NotTo(HaveOccurred())
Expand All @@ -1314,5 +1314,37 @@ var _ = Describe("List Commands", func() {
Expect(lrang.Val()).To(Equal([]string{"4", "3", "2", "1", "5"}))

})

It("should LPUSH and LRANGE", func() {

rPush := client.LPush(ctx, "mylist", "a", "b", "c", "d", "e")
Expect(rPush.Err()).NotTo(HaveOccurred())
Expect(rPush.Val()).To(Equal(int64(5)))

lRange := client.LRange(ctx, "mylist", 0, -1)
Expect(lRange.Err()).NotTo(HaveOccurred())
Expect(lRange.Val()).To(Equal([]string{"e", "d", "c", "b", "a"}))
})

It("should RPOPLPUSH and update list order", func() {

client.LPush(ctx, "mylist", "a", "b", "c", "d", "e")

rPopPush := client.RPopLPush(ctx, "mylist", "mylist")
Expect(rPopPush.Err()).NotTo(HaveOccurred())
Expect(rPopPush.Val()).To(Equal("a"))

lRange := client.LRange(ctx, "mylist", 0, -1)
Expect(lRange.Err()).NotTo(HaveOccurred())
Expect(lRange.Val()).To(Equal([]string{"a", "e", "d", "c", "b"}))

rPopPush = client.RPopLPush(ctx, "mylist", "mylist")
Expect(rPopPush.Err()).NotTo(HaveOccurred())
Expect(rPopPush.Val()).To(Equal("b"))

lRange = client.LRange(ctx, "mylist", 0, -1)
Expect(lRange.Err()).NotTo(HaveOccurred())
Expect(lRange.Val()).To(Equal([]string{"b", "a", "e", "d", "c"}))
})
})
})

0 comments on commit f852dbd

Please sign in to comment.