Releases: apache/incubator-pegasus
Releases · apache/incubator-pegasus
v1.12.0
v1.11.6
v1.11.5
Release Notes of v1.11.5
Refer to #341 for detailed updates.
This is a minor release, including:
Improvements on Capacity Unit
HTTP memory profiling support
Shell & Tools(sample/bench/redisproxy) updates
Support of JSON ouput in shell: #329, #290, XiaoMi/rdsn#254, XiaoMi/rdsn#223
Support exact match : #303
Upgrading from the previous version
[pegasus.collector]
-- cu_stat_app = stat
-- cu_fetch_interval_seconds = 8
++ usage_stat_app = stat
++ capacity_unit_fetch_interval_seconds = 8
++ storage_size_fetch_interval_seconds = 3600
v1.11.4
v1.11.3
新特性
- 改进客户端查询路由表逻辑,支持让非主MetaServer返回主MetaServer的真正地址,方便扩展新的MetaServer节点 (XiaoMi/rdsn#212 XiaoMi/rdsn#217)
- 支持为rocksdb不同level的文件配置不同的压缩算法 (#243)
- 改进Manual-Compact功能,增加环境变量
manual_compact.max_concurrent_running_count
,支持限制compact并发数 (#250) - 增加环境变量
rocksdb.checkpoint.reserve_min_count
和rocksdb.checkpoint.reserve_time_seconds
,支持动态修改rocksdb checkpoint保留策略 (#252) - 为ReplicaServer增加远程命令
useless-dir-reserve-seconds
,支持动态修改无用文件夹的保留时间,方便快速释放存储空间 (XiaoMi/rdsn#215) - 增加cluster balance indicator功能,监控集群的负载均衡状态 (#269 XiaoMi/rdsn#214)
Bug修复
- 修复统计过程中对浮点数处理不当造成数据不准确的问题 (#234 #246)
- 修复在关闭block_cache后对空指针进行非法访问的bug (#241)
- 修复failure detection无法保证同一时刻只有一个primary的bug,并将心跳超时的默认时间调长 (#247 XiaoMi/rdsn#213)
- 修复编译脚本中没有链接上tcmalloc库的bug (#289)
性能优化
- 修改rocksdb的默认压缩算法为lz4 (#240)
- 改进Manual-Compact功能,在执行完成后尽快清理老的checkpoint,以快速释放存储空间 (#253)
- 改进Cold-Backup功能,在执行完成后立即清理backup文件夹下的checkpoint,以快速释放存储空间 (XiaoMi/rdsn#216)
重构与化简
- 重构partition resolver模块:将该模块移到replication/client下面,并移除uri resolver (#242 XiaoMi/rdsn#205)
Shell工具
- 重构输出结果的表格格式化打印工具 (XiaoMi/rdsn#220)
- 改进copy_data/clear_data/count_data命令,支持对HashKey/SortKey/Value进行条件过滤 (#271 #292)
- 改进app_stat命令,显示app_id和partition_count数据列,并增加
--only_usage
选项 (#271 #285 #288) - 改进nodes命令,增加
--resource_usage
选项,显示各节点的资源使用情况 (#277)
其他
- 增加
pegasus_check_clusters.py
脚本,用来检查集群的负载均衡状态 (#244) - 改进
.travis.yml
,避免编译thirdparty库 (#240 XiaoMi/rdsn#206) - 编译时不再下载
bin/Linux/thrift
,只在调用compile_thrift.py
时按需要下载 (XiaoMi/rdsn#207) - 完善pegasus-thirdparty-prebuild预编译包,包含完整的依赖库,解决依赖库不完整的问题 (XiaoMi/rdsn#207)
- 改进
.travis.yml
,在编译之前自动执行clang-format
进行代码风格检查 (XiaoMi/rdsn#208) - 改进falcon screen自动生成脚本,完善监控图统计项,调整监控图展示顺序 (#262 #270 XiaoMi/rdsn#218)
- 改进pack工具,修复了一些小问题 (#257 #275)
- 改进推荐的配置文件
src/server/config.ini
(#294)
兼容性
v1.11.2
新特性
- 支持表级流控 (#230 XiaoMi/rdsn#204)
- 支持表级TTL(#202 #206)
- 支持表级拒绝写(XiaoMi/rdsn#194)
- 增加可选的zstd, lz4数据压缩方式(#217)
- 暴露RocksDB的相关监控项(#212)
- 增加shared log写入速度的监控(XiaoMi/rdsn#197)
- 增加falcon监控项(#211 #218)
Bug修复
- 修复使用
nmap
扫描端口引起的coredump问题(XiaoMi/rdsn#169) - 修复
multi_get
计数错误问题 (#215) - 修复从冷备份restore表数据时,因表名不合法而失败的问题(XiaoMi/rdsn#187)
- 修复部分 valgrind 内存泄漏警告 (XiaoMi/rdsn#172 XiaoMi/rdsn#173 XiaoMi/rdsn#174 XiaoMi/rdsn#179 XiaoMi/rdsn#180 XiaoMi/rdsn#181 XiaoMi/rdsn#182 XiaoMi/rdsn#183)
性能优化
- 使用
io_prep_pwritev
减少内存拷贝(XiaoMi/rdsn#203)
Shell工具
- 增加
cc [cluster_name]
,切换操作的集群 (#178) count_data -z
可输出数据大小的histogram数据(#216)count_data
可输出不同hashkey的数量(#223)- 增加
ls
统计app数量的功能(XiaoMi/rdsn#202) - 增加二维数据输出工具(#213)
重构与化简
- 重构随机数生成API(XiaoMi/rdsn#163 #183)
- 重构与简化CMakeList(#188 , #190, XiaoMi/rdsn#165 XiaoMi/rdsn#166)
- 重构simple_kv(XiaoMi/rdsn#195 XiaoMi/rdsn#199)
- 重构文件操作相关API并移至file_io模块(XiaoMi/rdsn#172)
- 重构 thrift 代码生成脚本 (XiaoMi/rdsn#186 #205)
- 重构zlock(XiaoMi/rdsn#177)
- 移除无用文件和代码(XiaoMi/rdsn#161 XiaoMi/rdsn#162 XiaoMi/rdsn#164 XiaoMi/rdsn#167 XiaoMi/rdsn#191 XiaoMi/rdsn#198)
- 删除 ext 目录并将 ext/hpc_locks 移至 utility 下 (XiaoMi/rdsn#171)
其他
- 增加选项以关闭 tcmalloc,使 valgrind 能正确测试内存泄漏 (XiaoMi/rdsn#170)
- 编译Pegasus时,可选择不编译rdsn的测试,加快编译速度(#182)
- 将第三方包放到阿里云机器,避免下载缓慢的问题(XiaoMi/rdsn#193)
- 增加 format-files.sh 脚本用于代码格式化 (#205)
- docker file支持ubuntu 16.04(#214)
- 修复某些情况下在64位机上的编译问题(XiaoMi/rdsn#189)
- 修复 google/s2geometry 依赖下载失败的问题 (XiaoMi/rdsn#166 XiaoMi/rdsn#168)
- 修复用户使用 boost 1.68 库编译失败的问题 (#195)
- 修复部分环境下的打包问题(#210 #232)
兼容性
max_input_queue_length
已弃用,可从配置文件中删除(XiaoMi/rdsn#191)
v1.11.1
新特性
- 支持 incr 同时原子修改 ttl (#178)
Bug 修复
- 修复 c++ client 头文件因
check_and_mutate
引用 thrift 的问题,重构代码避免 client.h 直接引用dsn::apps::mutate
(#177)
rdsn模块的化简与重构
- 删除 service_api 相关的部分无用代码 (XiaoMi/rdsn#157)
- 删除 dsn.cmake 中与 windows 支持相关的部分无用代码 (XiaoMi/rdsn#160)
- 将 cli 与 core 解耦,删除 cli_remote/cli_local 这两个配置,同时将散落各处的 cli 相关代码合并在一起 XiaoMi/rdsn#156
v1.11.0
新特性
- 增加
check_and_mutate
操作的接口和实现(#161) - 扩展app_info结构,增加
create_seconds
和drop_seconds
字段(XiaoMi/rdsn#154) - 改进RPC,在rpc code不存在或者没有注册handler时给客户端返回
ERR_HANDLER_NOT_FOUND
错误码(XiaoMi/rdsn#149) - 改进冷备份,支持hdfs-fuse存储方式(XiaoMi/rdsn#150)
- 在rdsn中嵌入http server,以支持可视化监控(XiaoMi/rdsn#139)
- 改进redis proxy,增加
incr/incrby/decr/decrby
命令(#146) - 增加
ddd_dignose
查询接口,以支持DDD诊断功能(XiaoMi/rdsn#80)
Bug修复
- 修复scan时context id可能冲突的问题,降低冲突概率(#158)
- 修复learn过程中计数器
learn_app_concurrent_count
增减不一致造成learn过程被阻塞的bug(#153) - 修复geo功能模块中写数据的bug(#174)
rdsn模块的化简与重构
- 重构nfs相关代码,并将其独立为一个单独的服务模块(XiaoMi/rdsn#142)
- 重构filesystem相关代码(XiaoMi/rdsn#148)
- 移除message相关的C接口(XiaoMi/rdsn#151)
Shell工具
- 启动shell工具时,自动从meta-server获取正确的集群名(#157)
- 改进
ls
子命令,在输出信息中增加create_time
和drop_time
列(#169) - 改进
app_stat
子命令的输出格式(#164) - 增加
ddd_diagnose
命令,以支持DDD诊断功能(#175)
脚本工具
- 改进
pegasus_rolling_update.sh
脚本,使其更健壮(#167)
其他
- 改进编译工具,使用CMake编译rocksdb(XiaoMi/pegasus-rocksdb#9)
- 在第三方依赖中,增加对gflags的依赖,升级libevent库的版本(XiaoMi/rdsn#143)
- 提供部署onebox集群的docker file(#138)
- 在doc中增加PPT文档(#154)
v1.10.0
新特性
- 新增原子incr接口,支持原子增减操作(#112)
- 新增原子check_and_set接口, 支持原子CAS操作(#122)
- 新增geo功能库, 支持set, del, search_radial接口, 并在redis proxy中适配redis的相关geo接口(#74)
- 增加错误注入工具, 便于编写更完善的单元测试(XiaoMi/rdsn#120)
- 在replication框架中, 为task_code增加
is_idempotent
属性, 以便区分幂等
和非幂等
操作(XiaoMi/rdsn#122) - 在
rpc_holder
中添加response属性, 便于编写某些场景的单元测试(XiaoMi/rdsn#125) - 新增
string_view::find
函数(XiaoMi/rdsn#128)
Bug修复
- 修复计算shared log大小错误的问题(XiaoMi/rdsn#133)
- 修复buf2signed/buf2unsigned/buf2double/buf2bool转换string_view时的一个bug(XiaoMi/rdsn#138)
- 修复本地IP地址判断遗漏172网段的bug(XiaoMi/rdsn#140)
- 修复机器在安装了zstd, lz4, jemalloc库后编译Pegasus失败的问题(XiaoMi/pegasus-rocksdb#8) (#134)
优化/重构
- 优化redis proxy, 使得在解析消息发生错误时, 不再抛异常(#104)
- 优化replica server的写流程, 并加入错误注入测试, 模拟rocksdb发生各种错误(#117)
- 重构perf_counter, 并从pegasus中独立成rdsn单独的模块, 以便系统中其他模块使用(XiaoMi/rdsn#134)
- 统一使用rdsn中的buf2xxx实现方式(#114)
- 移除clientlet, 增加thread_access_checker, 使得rDSN中的概念更清晰(XiaoMi/rdsn#121)
- 将pegasus bench从rocksdb中移到pegasus,解除耦合(#123)
- 重构message_parser, 简化代码(XiaoMi/rdsn#131)
- 移除fastrun(XiaoMi/rdsn#117)
Shell工具
- 新增incr, check_and_set子命令(#122)
脚本工具
v1.9.2
Bug修复
- 修复rpc_session在接受新连接后可能会导致double free的bug
脚本工具
- 让shell命令和falcon自动创建screen的脚本支持minos2.0