跳转至

bookkeeper Release 4.17.0

```markdown 发布 4.17.0 版本包含多个重要功能、改进、错误修复和一些依赖项的 CVE 修复。

以下是此版本的技术细节总结。

重大变更

无重大变更。一些默认值有所不同,但总体上没有兼容性问题。

功能

  • BP-62 批量读取 API

重要变更

  • 默认启用 bk 客户端的读取顺序重排 PR #4139
  • 修复 prometheus 客户端生成的一些没有类型信息的指标 PR #3927
  • 修复启用 httpServer 时的任意文件上传漏洞 PR #3982
  • 在 log4j 配置中启用 kv 日志 PR #3986
  • 使 DefaultEntryLogger 和 DirectEntryLogger 兼容 PR #4041

Bookie

  • 修复负数 JournalQueueSize 的错误 PR #4077
  • 修复压缩节流不精确的问题 PR #3192
  • 修复配置多个账本目录时的数据丢失问题 PR #3329
  • 在压缩时重命名文件时尝试使用 jdk api 创建硬链接 PR #3876
  • [功能] [服务器] 添加 dbStorage_readAheadCacheBatchBytesSize 属性以提前读取条目 PR #3895
  • 修复 EntryLocationIndex 中 ledgersToDelete 为空时的键泄漏问题 PR #3903
  • 修复运行时异常阻塞垃圾回收的问题 PR #3901
  • 无更改时跳过同步 RocksDB PR #3904
  • 启用 PCBC completionObjects 自动收缩以减少内存使用和垃圾回收 PR #3913
  • [修复] 在发生各种异常时回收丢弃的读写请求 PR #3912
  • 修复账本复制失败阻止 bookie 退役过程 PR #3917
  • 支持在回复日志阶段跳过无效的日志记录 PR #3956
  • 避免压缩触发额外的 DbLedgerStorage 刷新 PR #3959
  • 修复直接内存条目记录器中的直接内存泄漏 PR #3983
  • 统一 DirectIO 组件的 ByteBufAllocator PR #3985
  • 打印压缩进度 PR #4071
  • 优化 bookie 退役检查等待间隔 PR #4070
  • 修复触发 GC 不工作的问题 PR #3998
  • 允许在单个 rocksdb 批处理中设置最大操作数 PR #4044
  • 为账本检查器添加读取失败日志 PR #4010
  • 修复执行器抛出 RejectedExecutionException 时的读写请求泄漏问题 PR #4024
  • 提高 DefaultEntryLogger 的读取性能 PR #4038

客户端

  • [错误] 总是创建一个孤立的账本 PR #3813
  • 修复当负载为 CompositeByteBuf 且 readerIndex > 0 时的校验和计算错误 PR #4196
  • 修复重置所有 BK 的机架后没有已知 bookies 的问题 PR #4128
  • 修复客户端运行时与旧版 grpc 的二进制兼容性问题 PR #3997
  • 条目写入支持本地节点区域感知放置策略 PR #4063
  • 机架感知放置策略支持通过主机名感知本地节点 PR #4057
  • 使用 netty-bom 对齐 netty 库版本,添加 linux-aarch_64 的 epoll 支持 PR #4204

自动恢复

  • 使 AutoRecovery 默认启用 stickyReadS PR #4125
  • 支持自动恢复的重试逻辑 PR #3799
  • 修复审计员选举执行器阻塞问题 PR #4165
  • 修复由于添加条目围栏错误导致的自动恢复失败复制问题 PR #4163
  • 修复审计员线程泄漏问题 PR #4162
  • 自动恢复支持批量读取 PR #4211

其他

  • 添加 CLI 命令以在没有 bookie 的情况下启动状态存储服务 PR #2648
  • 添加符合放置策略的合奏重新定位命令 PR #2931
  • 调整池并发性 PR #3432
  • 修复 docker 镜像中的日志配置问题 PR #4137
  • [发布] 强制使用 linux/amd64 构建发布 PR #4060

依赖项变更

升级了重要的依赖项并解决了 CVEs,包括:

  • 升级 snappy-java 以解决多个 CVEs PR #3993
  • 升级 grpc 和 protobuf 以解决 CVE-2023-32732 PR #3992
  • 升级 Zookeeper 到 3.8.3 以解决 CVE-2023-44981 PR #4112
  • 升级 Netty 到 4.1.107.Final 和 io_uring 到 0.0.25.Final PR #4224
  • 将 org.apache.commons:commons-compress 从 1.21 升级到 1.26.0 PR #4214
  • 将 datasketches 版本从 0.8.3 升级到 3.2.0 PR #3264
  • 解决日志配置在 docker 镜像中损坏的问题 PR #4137
  • 升级 rocksdb 版本以避免校验和不匹配错误 PR #3568
  • 升级 commons-codec 到 1.13 PR #3508
  • 从 hadoop-common 中移除 avro、hadoop-auth 和 jersey-json 依赖项以解决 [CVE-2019-