项目动态|Apache|项目动态|Apache Pulsar 2.7.4 版本发布
关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。近期,Apache Pulsar 社区发布了 Pulsar 2.7.4 版本!新版本涵盖 32 位贡献者提供的改进和错误修复,并提交了 98 次变更。
GitHub 地址:http://github.com/apache/pulsar/
版本亮点
- 将 Log4j 升级至 2.17.0 版本 - CVE-2021-45105[1]。 PR-13392[2]
- 回收
OpAddEntry
时可以正确引用ManagedLedger
。PR-12103[3] - 当 ManagedLedger 关闭时,在
OpAddEntry
上不会发生 NPE。PR-12364[4]
Bug 修复和功能增强 PR-13392[6]:将 log4j 升级至2.17.0 版本 - CVE-2021-45105[7]
问题: 关于 Log4j 的严重漏洞允许攻击者远程执行。该漏洞问题在 CVE-2021-44228[8] 描述和跟踪。
解决方案: 将 log4j 升级至 2.17.0 版本。详情参考博客。
PR-12103[9]:回收
OpAddEntry
时可以正确引用 ManagerLedger
。问题: 此版本之前,在写入失败后,会在后台安排一个任务来强制关闭 ledger 并触发新 ledger 的创建。如果
OpAddEntry
实例已被回收,则可能导致 NPE 或未定义的行为。解决方案:
ManagedLedgerImpl
对象引用被复制到最终变量,后台任务将不依赖于 OpAddEntry
实例的生命周期。PR-12123[10]:
BlobStoreBackedReadHandler
中没有潜在的竞态条件。问题: 此版本之前,
BlobStoreBackedReadHandler
在读取 offload ledger 时进入无限循环。在读取 entry 和关闭 BlobStoreBackedReadHandler 的操作之间存在竞态条件。解决方案: 在读取 entry 之前添加了状态检查,并在
entryID
大于 lastEntryID
时使 BlobStoreBackedReadHandler
退出循环。PR-12364[11]:当 ManagedLedger 关闭时,在
OpAddEntry
上不会发生 NPE。问题 : 此版本之前,
ManagedLedgerBkTest#managedLedgerClosed
测试在一些 asyncAddEntry
操作上关闭了 ManagedLedger 对象,并因 NPE 失败。解决方案: 当
ManagedLedger
通知 OpAddEntry
失败时关闭 OpAddEntry
。这样就正确回收了OpAddEntry
对象并成功触发失败的回调。PR-11294[12]:通过分区的主题名称正确设置主题策略。
问题: 此版本之前,分区的主题名称不能用于设置主题策略。
解决方案: 通过在
SystemTopicBasedTopicPoliciesService
中转换分区的主题名称,允许通过分区的主题名称设置主题策略。PR-8611[13]:调度速率限制器对消费者生效。
问题: 此版本之前,由于
acquiredPermits
每秒重置为 0,因此在所有消费者在下一秒开始读取的情况下,调度速率限制器不会生效。解决方案: 将
DispatchRateLimiter
的行为变更为每秒减去 permits
,而不是将 acquiredPermits
重置为 0。消费者暂时停止读取 entry,直到 acquiredPermits
返回的值小于 permits
。PR-11310[14]:执行 unload bundle 操作时不会发生 NPE。
问题: 在对持久分区主题进行压力测试时,在执行 unload bundle 操作时会出现 NPE。同时,生产者没有写消息。
解决方案: 添加更多安全性检查来修复此问题。
PR-11346[15]:修复命名空间 bundle 缓存的不一致行为。
问题: 此版本之前,在命名空间被删除后,命名空间 bundle 缓存没有失效。
解决方案: 当 bundle 缓存失效时,命名空间策略缓存失效。
PR-11342[16]:删除集群后关闭复制机和复制客户端。
问题: 此版本之前,删除集群后,复制机和复制客户端没有关闭。复制机的生产者会不断尝试重新连接到已删除的集群。
解决方案: 关闭相应的复制机与复制客户端。
PR-10384[17]:发布速率限制器按预期生效。
问题: 此版本之前,如果将
preciseTopicPublishRateLimiterEnable
设置为 true
以进行限制速率,会出现以下问题:- 将限制从有界限制更改为无界限制时,更新的限制不会设置边界。
- 每个主题会为每个限制器实例创建一个调度线程。
- 当主题被卸载或操作关闭时,主题不发布调度线程。
- 更新限制不会关闭与被替换的限制器实例相关的调度线程。
- 在创建新的限制器实例之前清理以前的限制器实例。
- 使用
brokerService.pulsar().getExecutor()
作为速率限制器实例的调度器。 - 添加用于主题关闭(卸载)的资源清理 hook。
问题: 在更新 ZNode 列表时,ZooKeeper 会抛出异常并且不会清理已创建的 ledger。新创建的 ledger 未编入主题
managedLedger
列表的索引,因此无法作为主题保留清除。此外,如果抛出 ZNode 版本不匹配异常,ZNode 数量会在 ZooKeeper 中增加。解决方案: 当 ZNode 列表更新失败时,无论何种异常类型,都从 broker 缓存和 BookKeeper 中删除已创建的 ledger。
参与其中 新版本使用 欢迎大家下载[19]并使用新版本!如果在使用中遇到问题,可以通过提 issue[20] 或在微信群交流的方式抛出疑问并与社区交流。
加入 Apache Pulsar 社区 Pulsar 项目的成长来源于社区,也扎根于社区。一次次新版本的筹备与发布离不开社区伙伴们的贡献。你是否愿意成为其中的一员呢?参与开源,可以获得公司及社区内外的认可,结交来自各个领域、志同道合的小伙伴;同时也可以提高个人影响力,促进个人发展。参与开源不是码农的专属,社区、文档等各个方面都可以让大家发挥一技之长。
作为全球性开源项目,截至目前,Apache Pulsar 已拥有 480 名贡献者、10.2 K+ Star 、2.6 K+ Fork 。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache Pulsar 项目的不断发展与前进。
- Apache Pulsar 官方贡献指南[21]
- 加入 Apache Pulsar 志愿者大家庭
- 项目动态|Apache Pulsar 2.8.1 版本发布
- 项目动态 | Apache Pulsar 2.7.3 版本介绍
[1]
CVE-2021-45105: https://pulsar.apache.org/blo...[2]
PR-13392: https://github.com/apache/pul...[3]
PR-12103: https://github.com/apache/pul...[4]
PR-12364: https://github.com/apache/pul...[5]
Pulsar 2.7.4 发布注记: https://pulsar.apache.org/rel...[6]
PR-13392: https://github.com/apache/pul...[7]
CVE-2021-45105: https://pulsar.apache.org/blo...[8]
CVE-2021-44228: https://nvd.nist.gov/vuln/det...[9]
PR-12103: https://github.com/apache/pul...[10]
PR-12123: https://github.com/apache/pul...[11]
PR-12364: https://github.com/apache/pul...[12]
PR-11294: https://github.com/apache/pul...[13]
PR-8611: https://github.com/apache/pul...[14]
PR-11310: https://github.com/apache/pul...[15]
PR-11346: https://github.com/apache/pul...[16]
PR-11342: https://github.com/apache/pul...[17]
PR-10384: https://github.com/apache/pul...[18]
PR-12015: https://github.com/apache/pul...[19]
下载: https://pulsar.apache.org/en/...[20]
提 issue: https://github.com/apache/pul...[21]
Apache Pulsar 官方贡献指南: http://pulsar.apache.org/en/c...关注公众号「ApachePulsar」,获取干货与动态
加入 Apache Pulsar 中文交流群
文章图片
【项目动态|Apache|项目动态|Apache Pulsar 2.7.4 版本发布】?
推荐阅读
- Apache多路复用模块(MPMs)介绍
- 17|17 关山松 第二课作业#公众号项目# D20
- RxJava|RxJava 在Android项目中的使用(一)
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- 动态组件与v-once指令
- 靠QQ月入上万灰色暴利偏门的项目
- spring|spring boot项目启动websocket
- vuex|vuex 基础结构
- 区块链开发平台(以太坊)
- 如何在手机上查看测试vue-cli构建的项目