diff --git a/0013-fix-deadlock.patch b/0013-fix-deadlock.patch new file mode 100644 index 0000000000000000000000000000000000000000..c059709492651d7b2033826644299ff3dc24db86 --- /dev/null +++ b/0013-fix-deadlock.patch @@ -0,0 +1,26 @@ +diff --git a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/ZKSessionWatcher.java b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/ZKSessionWatcher.java +index a350d4a5b3..ed6870824b 100644 +--- a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/ZKSessionWatcher.java ++++ b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/ZKSessionWatcher.java +@@ -80,7 +80,11 @@ public class ZKSessionWatcher implements AutoCloseable, Watcher { + } + + // task that runs every TICK_TIME to check zk connection +- private synchronized void checkConnectionStatus() { ++ // NOT ThreadSafe: ++ // If zk client can't ensure the order, it may lead to problems. ++ // Currently,we only use it in single thread, it will be fine. but we shouldn't leave any potential problems ++ // in the future. ++ private void checkConnectionStatus() { + try { + CompletableFuture future = new CompletableFuture<>(); + zk.exists("/", false, (StatCallback) (rc, path, ctx, stat) -> { +@@ -125,7 +129,7 @@ public class ZKSessionWatcher implements AutoCloseable, Watcher { + currentStatus = SessionEvent.SessionLost; + } + +- private void checkState(Watcher.Event.KeeperState zkClientState) { ++ private synchronized void checkState(Watcher.Event.KeeperState zkClientState) { + switch (zkClientState) { + case Expired: + if (currentStatus != SessionEvent.SessionLost) { diff --git a/pulsar.spec b/pulsar.spec index cba60b2485e52fea01fc76b87967506786acac08..f15c6c515b89a62a3e65e26d1827d9181dd8a654 100644 --- a/pulsar.spec +++ b/pulsar.spec @@ -1,6 +1,6 @@ %define debug_package %{nil} %define pulsar_ver 2.10.4 -%define pkg_ver 12 +%define pkg_ver 13 %define _prefix /opt/pulsar Summary: Cloud-Native, Distributed Messaging and Streaming Name: pulsar @@ -22,6 +22,7 @@ Patch0009: 0009-CVE-2022-24329.patch Patch0010: 0010-CVE-2022-22970.patch Patch0011: 0011-CVE-2023-25194.patch Patch0012: 0012-CVE-2023-2976.patch +Patch0013: 0013-fix-deadlock.patch BuildRoot: /root/rpmbuild/BUILDROOT/ BuildRequires: java-1.8.0-openjdk-devel,maven,systemd Requires: java-1.8.0-openjdk,systemd @@ -46,6 +47,7 @@ Pulsar is a distributed pub-sub messaging platform with a very flexible messagin %patch0010 -p1 %patch0011 -p1 %patch0012 -p1 +%patch0013 -p1 %build mvn clean install -Pcore-modules,-main -DskipTests @@ -71,6 +73,8 @@ getent passwd pulsar >/dev/null || useradd -r -g pulsar -d / -s /sbin/nologin pu exit 0 %changelog +* Thu Dec 7 2023 Dapeng Sun - 2.10.4-13 +- resolve fix deadlock * Thu Dec 7 2023 Dapeng Sun - 2.10.4-12 - resolve cve-2023-2976 * Wed Dec 6 2023 Dapeng Sun - 2.10.4-11