乐趣区

关于apache:项目动态|Apache-Pulsar-274-版本发布

对于 Apache Pulsar

Apache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。

GitHub 地址:http://github.com/apache/pulsar/

近期,Apache Pulsar 社区公布了 Pulsar 2.7.4 版本!新版本涵盖 32 位贡献者提供的改良和谬误修复,并提交了 98 次变更。

版本亮点

  • 将 Log4j 降级至 2.17.0 版本 – CVE-2021-45105[1]。PR-13392[2]
  • 回收 OpAddEntry 时能够正确援用 ManagedLedgerPR-12103[3]
  • 当 ManagedLedger 敞开时,在 OpAddEntry 上不会产生 NPE。PR-12364[4]

本博客按我的项目性能更新状况分组,介绍了 2.7.4 版本最值得关注的停顿,如需理解所有性能降级和 bug 修复的残缺列表,请查阅 Pulsar 2.7.4 公布注记[5]

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。

PR-12015[18]:如果无奈更新 ZNode 列表,则清理新创建的 ledger。
问题: 在更新 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 中文交换群 👇🏻

退出移动版