27 lines
1.5 KiB
Diff
27 lines
1.5 KiB
Diff
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<Watcher.Event.KeeperState> 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) {
|