From 6489b7e13db4d793494ca9faf362677901588db2 Mon Sep 17 00:00:00 2001 From: Yisheng Zhou Date: Tue, 15 Oct 2024 10:13:47 -0700 Subject: [PATCH 1/2] Fix orion error caused by brokers removed outside orion --- .../sensor/memq/MemqClusterSensor.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/orion-server/src/main/java/com/pinterest/orion/core/automation/sensor/memq/MemqClusterSensor.java b/orion-server/src/main/java/com/pinterest/orion/core/automation/sensor/memq/MemqClusterSensor.java index d61640f..0bd82c7 100644 --- a/orion-server/src/main/java/com/pinterest/orion/core/automation/sensor/memq/MemqClusterSensor.java +++ b/orion-server/src/main/java/com/pinterest/orion/core/automation/sensor/memq/MemqClusterSensor.java @@ -17,8 +17,10 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; @@ -29,6 +31,7 @@ import com.pinterest.orion.core.PluginConfigurationException; import com.pinterest.orion.core.memq.MemqCluster; import com.pinterest.orion.utils.NetworkUtils; +import org.apache.zookeeper.KeeperException; import static com.pinterest.orion.core.memq.MemqCluster.CLUSTER_CONTEXT; @@ -71,8 +74,22 @@ public void sense(MemqCluster cluster) throws Exception { Map rawBrokerMap = new HashMap<>(); Gson gson = new Gson(); + + Set brokersInZookeeper = new HashSet<>(); for (String brokerName : brokerNames) { - byte[] brokerData = zkClient.getData().forPath(BROKERS + "/" + brokerName); + byte[] brokerData = null; + try { + brokerData = zkClient.getData().forPath(BROKERS + "/" + brokerName); + } catch (KeeperException.NoNodeException e) { + cluster.getNodeMap().remove(brokerName); + logger.info( + "Broker data of " + brokerName + " is not available in zookeeper. It may have been removed."); + continue; + } catch (Exception e) { + logger.severe( + "Face unknown exception when getting broker data for " + brokerName +" from zookeeper:" + e); + continue; + } Broker broker = gson.fromJson(new String(brokerData), Broker.class); NodeInfo info = new NodeInfo(); info.setClusterId(cluster.getClusterId()); @@ -96,6 +113,18 @@ public void sense(MemqCluster cluster) throws Exception { } hostnames.add(hostname); } + brokersInZookeeper.add(broker.getBrokerIP()); + } + + if (brokersInZookeeper.isEmpty()) { + logger.warning("No broker found in zookeeper for cluster " + cluster.getClusterId()); + } else { + // Remove brokers that are not in zookeeper from the cluster node map + for (String nodeId : cluster.getNodeMap().keySet()) { + if (!brokersInZookeeper.contains(nodeId)) { + cluster.getNodeMap().remove(nodeId); + } + } } Map topicConfigMap = new HashMap<>(); From 2fd308d85d5751e05053ff0327131f4598001865 Mon Sep 17 00:00:00 2001 From: Yisheng Zhou Date: Tue, 15 Oct 2024 13:34:13 -0700 Subject: [PATCH 2/2] Error message update --- .../orion/core/automation/sensor/memq/MemqClusterSensor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/orion-server/src/main/java/com/pinterest/orion/core/automation/sensor/memq/MemqClusterSensor.java b/orion-server/src/main/java/com/pinterest/orion/core/automation/sensor/memq/MemqClusterSensor.java index 0bd82c7..ee2c5c6 100644 --- a/orion-server/src/main/java/com/pinterest/orion/core/automation/sensor/memq/MemqClusterSensor.java +++ b/orion-server/src/main/java/com/pinterest/orion/core/automation/sensor/memq/MemqClusterSensor.java @@ -83,11 +83,11 @@ public void sense(MemqCluster cluster) throws Exception { } catch (KeeperException.NoNodeException e) { cluster.getNodeMap().remove(brokerName); logger.info( - "Broker data of " + brokerName + " is not available in zookeeper. It may have been removed."); + "Broker data of " + brokerName + " is not available in zookeeper. The broker might be removed."); continue; } catch (Exception e) { logger.severe( - "Face unknown exception when getting broker data for " + brokerName +" from zookeeper:" + e); + "Faced an unknown exception when getting broker data for " + brokerName +" from zookeeper:" + e); continue; } Broker broker = gson.fromJson(new String(brokerData), Broker.class);