Fixed the usage of the ZookeeperClusterStatus Object

Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/2734f46d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/2734f46d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/2734f46d

Branch: refs/heads/blur-console-v2
Commit: 2734f46dedc5a665a81baa3d472fcdc797a46ace
Parents: ca61e41
Author: Chris Rohr <[email protected]>
Authored: Wed Nov 6 21:00:54 2013 -0500
Committer: Chris Rohr <[email protected]>
Committed: Wed Nov 6 21:00:54 2013 -0500

----------------------------------------------------------------------
 .../org/apache/blur/console/util/Config.java    |  19 +++-
 .../org/apache/blur/console/util/NodeUtil.java  | 101 ++++++++++---------
 2 files changed, 67 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/2734f46d/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
index 87dcbac..b732004 100644
--- 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
+++ 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
@@ -18,6 +18,7 @@ package org.apache.blur.console.util;
  */
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.blur.BlurConfiguration;
@@ -26,8 +27,9 @@ import org.apache.commons.lang.StringUtils;
 
 public class Config {
        private static int port = 8080;
-       
        private static BlurConfiguration blurConfig;
+       private static ZookeeperClusterStatus zk;
+       private static String blurConnection;
 
        public static int getConsolePort() {
                return port;
@@ -38,12 +40,21 @@ public class Config {
        
        public static void setupConfig() throws IOException {
                blurConfig = new BlurConfiguration();
+               zk = new 
ZookeeperClusterStatus(blurConfig.get("blur.zookeeper.connection"), blurConfig);
+               blurConnection = buildConnectionString();
        }
        
        public static String getConnectionString() throws IOException {
-               ZookeeperClusterStatus zk = new 
ZookeeperClusterStatus(blurConfig.get("blur.zookeeper.connection"), blurConfig);
-               List<String> allControllers = zk.getControllerServerList();
-               zk.close();
+               return blurConnection;
+       }
+       
+       public static ZookeeperClusterStatus getZookeeper() {
+               return zk;
+       }
+       
+       private static String buildConnectionString() {
+               List<String> allControllers = new ArrayList<String>();
+               allControllers = zk.getControllerServerList();
                return StringUtils.join(allControllers, ",");
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/2734f46d/contrib/blur-console/src/main/java/org/apache/blur/console/util/NodeUtil.java
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/NodeUtil.java 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/NodeUtil.java
index 93b133d..4e317aa 100644
--- 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/NodeUtil.java
+++ 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/NodeUtil.java
@@ -38,17 +38,12 @@ import org.apache.commons.collections.CollectionUtils;
 public class NodeUtil {
        @SuppressWarnings("unchecked")
        public static Map<String, Object> getControllerStatus() throws 
IOException {
-               ZookeeperClusterStatus zk = new 
ZookeeperClusterStatus(Config.getBlurConfig().get("blur.zookeeper.connection"),
-                               Config.getBlurConfig());
-
+               ZookeeperClusterStatus zk = Config.getZookeeper();
+               
                List<String> allControllers = new ArrayList<String>();
                List<String> oControllers = new ArrayList<String>();
-               try {
-                       allControllers = zk.getOnlineControllerList();
-                       oControllers = zk.getControllerServerList();
-               } finally {
-                       zk.close();
-               }
+               allControllers = zk.getOnlineControllerList();
+               oControllers = zk.getControllerServerList();
                
                Collection<String> onlineControllers = 
CollectionUtils.intersection(allControllers, oControllers);
                Collection<String> offlineControllers = 
CollectionUtils.subtract(allControllers, oControllers);
@@ -83,46 +78,41 @@ public class NodeUtil {
        }
 
        public static List<Map<String, Object>> getClusterStatus() throws 
IOException {
-               ZookeeperClusterStatus zk = new 
ZookeeperClusterStatus(Config.getBlurConfig().get("blur.zookeeper.connection"),
-                               Config.getBlurConfig());
+               ZookeeperClusterStatus zk = Config.getZookeeper();
 
                List<Map<String, Object>> data = new 
ArrayList<Map<String,Object>>();
-               try {
-                       List<String> clusters = zk.getClusterList(false);
-       
-                       for (String cluster : clusters) {
-                               Map<String, Object> clusterObj = new 
HashMap<String, Object>();
-                               clusterObj.put("name", cluster);
-       
-                               List<String> offlineShardServers = 
zk.getOfflineShardServers(false, cluster);
-                               List<String> onlineShardServers = 
zk.getOnlineShardServers(false, cluster);
-       
-                               clusterObj.put("online", onlineShardServers);
-                               clusterObj.put("offline", offlineShardServers);
-       
-                               List<Map<String, Object>> clusterData = new 
ArrayList<Map<String,Object>>();
-                               
-                               Map<String, Object> online = new 
HashMap<String, Object>();
-                               online.put("data", new 
int[][]{{0,onlineShardServers.size()}});
-                               online.put("label", "Online");
-                               online.put("color", "#7DC77D");
-       
-                               Map<String, Object> offline = new 
HashMap<String, Object>();
-                               offline.put("data", new 
int[][]{{0,offlineShardServers.size()}});
-                               offline.put("label", "Offline");
-                               offline.put("color", "#FF1919");
-       
-                               clusterData.add(online);
-                               clusterData.add(offline);
-                               clusterObj.put("chart", clusterData);
-                               if (offlineShardServers.isEmpty() && 
onlineShardServers.isEmpty()) {
-                                       clusterObj.put("errmsg", "Unable to 
find any nodes for cluster [" + cluster + "]");
-                               }
-       
-                               data.add(clusterObj);
+               List<String> clusters = zk.getClusterList(false);
+
+               for (String cluster : clusters) {
+                       Map<String, Object> clusterObj = new HashMap<String, 
Object>();
+                       clusterObj.put("name", cluster);
+
+                       List<String> offlineShardServers = 
zk.getOfflineShardServers(false, cluster);
+                       List<String> onlineShardServers = 
zk.getOnlineShardServers(false, cluster);
+
+                       clusterObj.put("online", onlineShardServers);
+                       clusterObj.put("offline", offlineShardServers);
+
+                       List<Map<String, Object>> clusterData = new 
ArrayList<Map<String,Object>>();
+                       
+                       Map<String, Object> online = new HashMap<String, 
Object>();
+                       online.put("data", new 
int[][]{{0,onlineShardServers.size()}});
+                       online.put("label", "Online");
+                       online.put("color", "#7DC77D");
+
+                       Map<String, Object> offline = new HashMap<String, 
Object>();
+                       offline.put("data", new 
int[][]{{0,offlineShardServers.size()}});
+                       offline.put("label", "Offline");
+                       offline.put("color", "#FF1919");
+
+                       clusterData.add(online);
+                       clusterData.add(offline);
+                       clusterObj.put("chart", clusterData);
+                       if (offlineShardServers.isEmpty() && 
onlineShardServers.isEmpty()) {
+                               clusterObj.put("errmsg", "Unable to find any 
nodes for cluster [" + cluster + "]");
                        }
-               } finally {
-                       zk.close();
+
+                       data.add(clusterObj);
                }
 
                return data;
@@ -134,6 +124,9 @@ public class NodeUtil {
                Set<String> offlineZookeepers = new HashSet<String>();
                
                for (String connection : connections) {
+                       Socket socket = null;
+                       InputStream response = null;
+                       OutputStream question = null;
                        try {
                                URI parsedConnection = new URI("my://" + 
connection);
                                String host = parsedConnection.getHost();
@@ -141,14 +134,14 @@ public class NodeUtil {
                                byte[] reqBytes = new byte[4];
                                ByteBuffer req = ByteBuffer.wrap(reqBytes);
                                
req.putInt(ByteBuffer.wrap("ruok".getBytes()).getInt());
-                               Socket socket = new Socket();
+                               socket = new Socket();
                                socket.setSoLinger(false, 10);
                                socket.setSoTimeout(20000);
                                parsedConnection.getPort();
                                socket.connect(new InetSocketAddress(host, 
port));
 
-                               InputStream response = socket.getInputStream();
-                               OutputStream question = 
socket.getOutputStream();
+                               response = socket.getInputStream();
+                               question = socket.getOutputStream();
 
                                question.write(reqBytes);
 
@@ -166,6 +159,16 @@ public class NodeUtil {
                                question.close();
                        } catch (Exception e) {
                                offlineZookeepers.add(connection);
+                       } finally {
+                               if (socket != null) {
+                                       socket.close();
+                               }
+                               if (response != null) {
+                                       response.close();
+                               }
+                               if (question != null) {
+                                       question.close();
+                               }
                        }
                }
                

Reply via email to