Skip to content

v1.9.0

Compare
Choose a tag to compare
@qinzuoyan qinzuoyan released this 20 Jun 07:55
· 5644 commits to master since this release

兼容性

  • 重要:​集群升级1.9版本后,有可能无法回退到1.9之前的老版本
  • 由于修复了json的格式问题,该版本json序列化/反序列化与之前版本有区别,主要影响是zookeeper上记录冷备份信息的backup_policy节点下的数据无法兼容;
  • 为了解决这个问题,从1.9版本开始,将zookeeper上的冷备份信息存储在新节点back下面,原节点backup_policy弃用;
  • 如果集群启用了冷备份功能(通过shell的ls_backup_policy命令可查看有没有启动冷备份),需遵循特定的步骤进行升级,具体参见下面的“升级流程”;
  • 如果集群没有启用冷备份功能,则不存在兼容性问题,可按照常规方式升级;
  • 对客户端的兼容性没有影响;

升级流程

  • disable掉所有的backup policy,并记录下disable了哪些policy;
  • 检查所有的policy,保证没有正在进行中的备份,如果有则等待其完成,并记录下所有的policy信息;
  • 使用shell的cluster_info命令,获取集群的zookeeper_hosts和zookeeper_cluster_name(zookeeper_root的后缀);
  • 使用json fix工具迁移zookeeper的backup_policy节点至back节点:./old2new.sh <zookeeper_hosts> <zookeeper_cluster_name>
  • 修改配置文件后,使用pegasus_rolling_update.sh工具升级一台机器:./script/pegasus_rolling_update.sh <cluster> <meta-list> one 0
  • 升级一台后观察几分钟,没有问题再升级所有机器:./script/pegasus_rolling_update.sh <cluster> <meta-list> all 1
  • 观察升级后集群是否正常,使用shell命令查看各统计指标是否正常;
  • 检查所有的back policy,与升级前信息是否一致;
  • 重新enable之前disable掉的policy;​

功能改进

  • 改进manual compact:可以通过app envs设置rocksdb.manual_compact.disabled=true关闭compact功能,取消已发起但未开始执行的compact;在compact完成后立即统计存储用量;
  • 改进collector:如果不指定email地址,则不发送可用度统计和报警邮件;增加可用度统计结果写回Pegasus表的重试次数,降低写入失败的概率,避免丢失统计结果;
  • 改进日志打印:在meta-server中执行set/del/clear app envs时打印相关日志;

Bug修复

  • 修复json库:修复其不能按照标准序列化和反序列化map数据的问题;修复其不能按照标准序列化和反序列化浮点数的问题;支持bool变量从true/false反序列化;
  • 修复server_stat:修复获取统计数据时依赖的perf counter不正确的问题;
  • 修复collector:修复detect table不存在时进程会core的问题;
  • 修复shell工具:修复并发使用shell工具时可能出现的配置文件冲突覆盖的问题;
  • 修复build和test脚本:修复exit -1非法参数的问题;修复单元测试脚本不能发现测试失败的问题;
  • 修复rdsn:将RPC_GROUP_CHECK的任务优先级改为HIGH,避免group check请求处理不及时造成超时而引发config change的问题;
  • 修复pegasus_server:修复了pegasus_extract_user_data()中可能使用已经被释放的string的bug;

性能优化

  • 改进checkpoint_timer,使trigger checkpoint随机化,避免集中触发flush操作,提升系统稳定性;

Shell工具

  • 在启动onebox时增加--collector选项,用于启动collector进程;
  • 在shell的count_data命令中增加--run_seconds选项,用于控制命令的运行时间以提前结束统计;
  • 改进shell工具,用linenoise库替换readline库,支持命令自动补全,支持历史命令记录,支持用法的hint提示;

脚本工具

  • 改进pegasus_manual_compact.sh脚本,增加--wait_only选项,使其更易用;
  • 改进scripts文件夹下的各种脚本,在脚本执行时生成的临时文件名中加入PID,避免脚本在并发执行时的冲突覆盖问题;

其他

  • 编译时增加--clear_thirdparty选项,可以清理掉已下载的thirdparty库;
  • 编译时增加--compiler选项,方便指定特定的C和C++编译器;修复clang编译器发现的一些问题;
  • 编译支持ccache,减少unit-test中不必要的sleep,提升编译速度;
  • 改进配置模板src/server/config.ini,修改一些配置项的推荐值,增加collector使用的配置项;
  • 改进README,增加相关项目的链接;