You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2019/12/07 15:02:03 UTC
[pulsar] branch master updated: Create load balance znode of broker
when znode missed. (#5784)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 3d38ad2 Create load balance znode of broker when znode missed. (#5784)
3d38ad2 is described below
commit 3d38ad270b3e4a24308b8e7938080e6fd4d05f7a
Author: lipenghui <pe...@apache.org>
AuthorDate: Sat Dec 7 23:01:52 2019 +0800
Create load balance znode of broker when znode missed. (#5784)
---
.../pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java | 9 +++++++--
.../pulsar/broker/loadbalance/ModularLoadManagerImplTest.java | 9 +++++++++
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java
index 89e965e..07fe7dc 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java
@@ -29,7 +29,6 @@ import io.netty.util.concurrent.DefaultThreadFactory;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -869,7 +868,13 @@ public class ModularLoadManagerImpl implements ModularLoadManager, ZooKeeperCach
updateLocalBrokerData();
if (needBrokerDataUpdate()) {
localData.setLastUpdate(System.currentTimeMillis());
- zkClient.setData(brokerZnodePath, localData.getJsonBytes(), -1);
+
+ try {
+ zkClient.setData(brokerZnodePath, localData.getJsonBytes(), -1);
+ } catch (KeeperException.NoNodeException e) {
+ ZkUtils.createFullPathOptimistic(zkClient, brokerZnodePath, localData.getJsonBytes(),
+ ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
+ }
// Clear deltas.
localData.getLastBundleGains().clear();
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java
index 20bba39..6368ea4 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java
@@ -630,4 +630,13 @@ public class ModularLoadManagerImplTest {
pulsar.close();
}
+
+ @Test
+ public void testZnodeMissed() throws Exception {
+ String path = LoadManager.LOADBALANCE_BROKERS_ROOT + "/" + pulsar1.getAdvertisedAddress() + ":" + pulsar1.getConfiguration().getWebServicePort().get();
+ ZkUtils.deleteFullPathOptimistic(pulsar1.getZkClient(), path, -1);
+ pulsar1.getLoadManager().get().writeLoadReportOnZookeeper();
+ // Delete it again to check the znode is create before write load balance data
+ ZkUtils.deleteFullPathOptimistic(pulsar1.getZkClient(), path, -1);
+ }
}