Return-Path: Delivered-To: apmail-hadoop-zookeeper-commits-archive@minotaur.apache.org Received: (qmail 72503 invoked from network); 6 Feb 2009 21:21:46 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 6 Feb 2009 21:21:46 -0000 Received: (qmail 85572 invoked by uid 500); 6 Feb 2009 21:21:46 -0000 Delivered-To: apmail-hadoop-zookeeper-commits-archive@hadoop.apache.org Received: (qmail 85555 invoked by uid 500); 6 Feb 2009 21:21:46 -0000 Mailing-List: contact zookeeper-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: zookeeper-dev@ Delivered-To: mailing list zookeeper-commits@hadoop.apache.org Received: (qmail 85544 invoked by uid 99); 6 Feb 2009 21:21:46 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Feb 2009 13:21:46 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Feb 2009 21:21:43 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 482292388879; Fri, 6 Feb 2009 21:21:22 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r741731 - in /hadoop/zookeeper/branches/branch-3.1: ./ src/java/main/org/apache/zookeeper/jmx/ src/java/main/org/apache/zookeeper/server/ src/java/main/org/apache/zookeeper/server/quorum/ Date: Fri, 06 Feb 2009 21:21:21 -0000 To: zookeeper-commits@hadoop.apache.org From: mahadev@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090206212122.482292388879@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mahadev Date: Fri Feb 6 21:21:21 2009 New Revision: 741731 URL: http://svn.apache.org/viewvc?rev=741731&view=rev Log: ZOOKEEPER-302. Quote values in JMX ObjectNames. (tom and pat via mahadev) Modified: hadoop/zookeeper/branches/branch-3.1/CHANGES.txt hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ConnectionBean.java hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServerBean.java hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java Modified: hadoop/zookeeper/branches/branch-3.1/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/CHANGES.txt?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/CHANGES.txt (original) +++ hadoop/zookeeper/branches/branch-3.1/CHANGES.txt Fri Feb 6 21:21:21 2009 @@ -91,6 +91,8 @@ ZOOKEEPER-293. zoo_set needs to be abi compatible (3.1 changed the signature), fix this by adding zoo_set2 (pat via mahadev) + ZOOKEEPER-302. Quote values in JMX ObjectNames. (tom and pat via mahadev) + IMPROVEMENTS: ZOOKEEPER-64. Log system env information when initializing server and Modified: hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java (original) +++ hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/jmx/MBeanRegistry.java Fri Feb 6 21:21:21 2009 @@ -22,7 +22,9 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import javax.management.JMException; import javax.management.MBeanServer; +import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import org.apache.log4j.Logger; @@ -54,7 +56,9 @@ * @param parent if not null, the new bean will be registered as a child * node of this parent. */ - public void register(ZKMBeanInfo bean, ZKMBeanInfo parent) { + public void register(ZKMBeanInfo bean, ZKMBeanInfo parent) + throws JMException + { assert bean != null; String path = null; if (parent != null) { @@ -70,9 +74,9 @@ ObjectName oname = makeObjectName(path, bean); try { mbs.registerMBean(bean, oname); - } catch (Exception e) { - LOG.error("Failed to register MBean " + bean.getName()); - e.printStackTrace(); + } catch (JMException e) { + LOG.warn("Failed to register MBean " + bean.getName()); + throw e; } } @@ -81,16 +85,16 @@ * @param path * @param bean */ - private void unregister(String path,ZKMBeanInfo bean){ + private void unregister(String path,ZKMBeanInfo bean) throws JMException { if(path==null) return; if (!bean.isHidden()) { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); try { mbs.unregisterMBean(makeObjectName(path, bean)); - } catch (Exception e) { - LOG.error("Failed to unregister MBean " + bean.getName()); - e.printStackTrace(); + } catch (JMException e) { + LOG.warn("Failed to unregister MBean " + bean.getName()); + throw e; } } } @@ -99,20 +103,28 @@ * Unregister MBean. * @param bean */ - public void unregister(ZKMBeanInfo bean){ + public void unregister(ZKMBeanInfo bean) { if(bean==null) return; String path=mapBean2Path.get(bean); - unregister(path,bean); + try { + unregister(path,bean); + } catch (JMException e) { + LOG.warn("Error during unregister", e); + } mapBean2Path.remove(bean); mapName2Bean.remove(bean.getName()); } /** * Unregister all currently registered MBeans */ - public void unregisterAll(){ - for(Map.Entry e: mapBean2Path.entrySet()){ - unregister(e.getValue(),e.getKey()); + public void unregisterAll() { + for(Map.Entry e: mapBean2Path.entrySet()) { + try { + unregister(e.getValue(), e.getKey()); + } catch (JMException e1) { + LOG.warn("Error during unregister", e1); + } } mapBean2Path.clear(); mapName2Bean.clear(); @@ -123,7 +135,7 @@ * @param name path elements * @return absolute path */ - public String makeFullPath(String prefix, String... name){ + public String makeFullPath(String prefix, String... name) { StringBuilder sb=new StringBuilder(prefix == null ? "/" : (prefix.equals("/")?prefix:prefix+"/")); boolean first=true; for (String s : name) { @@ -159,9 +171,11 @@ * Builds an MBean path and creates an ObjectName instance using the path. * @param path MBean path * @param bean the MBean instance - * @return ObjectName to be registered with the paltform MBean server + * @return ObjectName to be registered with the platform MBean server */ - protected ObjectName makeObjectName(String path, ZKMBeanInfo bean) { + protected ObjectName makeObjectName(String path, ZKMBeanInfo bean) + throws MalformedObjectNameException + { if(path==null) return null; StringBuilder beanName = new StringBuilder(CommonNames.DOMAIN + ":"); @@ -171,10 +185,10 @@ beanName.deleteCharAt(beanName.length()-1); try { return new ObjectName(beanName.toString()); - } catch (Exception e) { - e.printStackTrace(); - assert false; + } catch (MalformedObjectNameException e) { + LOG.warn("Invalid name \"" + beanName.toString() + "\" for class " + + bean.getClass().toString()); + throw e; } - return null; } } Modified: hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ConnectionBean.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ConnectionBean.java?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ConnectionBean.java (original) +++ hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ConnectionBean.java Fri Feb 6 21:21:21 2009 @@ -18,9 +18,14 @@ package org.apache.zookeeper.server; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.InetSocketAddress; import java.util.Arrays; import java.util.Date; +import javax.management.ObjectName; + import org.apache.log4j.Logger; import org.apache.zookeeper.jmx.MBeanRegistry; import org.apache.zookeeper.jmx.ZKMBeanInfo; @@ -44,15 +49,20 @@ return "0x" + Long.toHexString(connection.getSessionId()); } - public String getSourceIP() { - return connection.getRemoteAddress().getAddress().getHostAddress()+ - ":"+connection.getRemoteAddress().getPort(); + InetSocketAddress sockAddr = connection.getRemoteAddress(); + return sockAddr.getAddress().getHostAddress() + + ":" + sockAddr.getPort(); } - + public String getName() { - String ip=connection.getRemoteAddress().getAddress().getHostAddress(); - return MBeanRegistry.getInstance().makeFullPath("Connections", ip,getSessionId()); + InetAddress addr = connection.getRemoteAddress().getAddress(); + String ip = addr.getHostAddress(); + if (addr instanceof Inet6Address) { + ip = ObjectName.quote(ip); + } + return MBeanRegistry.getInstance().makeFullPath("Connections", ip, + getSessionId()); } public boolean isHidden() { @@ -61,7 +71,8 @@ public String[] getEphemeralNodes() { if(zk.dataTree!=null){ - String[] res=zk.dataTree.getEphemerals(connection.getSessionId()).toArray(new String[0]); + String[] res=zk.dataTree.getEphemerals(connection.getSessionId()) + .toArray(new String[0]); Arrays.sort(res); return res; } @@ -84,10 +95,11 @@ public void terminateConnection() { connection.close(); } - + @Override public String toString() { - return "ConnectionBean{ClientIP="+getSourceIP()+",SessionId=0x"+getSessionId()+"}"; + return "ConnectionBean{ClientIP=" + ObjectName.quote(getSourceIP()) + + ",SessionId=0x" + getSessionId() + "}"; } public long getOutstandingRequests() { Modified: hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java (original) +++ hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java Fri Feb 6 21:21:21 2009 @@ -861,6 +861,7 @@ MBeanRegistry.getInstance().register(jmxConnectionBean, zk.jmxServerBean); } catch (Exception e) { LOG.warn("Failed to register with JMX", e); + jmxConnectionBean = null; } try { Modified: hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java (original) +++ hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java Fri Feb 6 21:21:21 2009 @@ -334,10 +334,17 @@ try { jmxServerBean = new ZooKeeperServerBean(this); MBeanRegistry.getInstance().register(jmxServerBean, null); - jmxDataTreeBean = new DataTreeBean(dataTree); - MBeanRegistry.getInstance().register(jmxDataTreeBean, jmxServerBean); + + try { + jmxDataTreeBean = new DataTreeBean(dataTree); + MBeanRegistry.getInstance().register(jmxDataTreeBean, jmxServerBean); + } catch (Exception e) { + LOG.warn("Failed to register with JMX", e); + jmxDataTreeBean = null; + } } catch (Exception e) { LOG.warn("Failed to register with JMX", e); + jmxServerBean = null; } } @@ -397,6 +404,10 @@ if (jmxDataTreeBean != null) { MBeanRegistry.getInstance().unregister(jmxDataTreeBean); } + } catch (Exception e) { + LOG.warn("Failed to unregister with JMX", e); + } + try { if (jmxServerBean != null) { MBeanRegistry.getInstance().unregister(jmxServerBean); } Modified: hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServerBean.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServerBean.java?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServerBean.java (original) +++ hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/ZooKeeperServerBean.java Fri Feb 6 21:21:21 2009 @@ -24,8 +24,6 @@ import org.apache.zookeeper.Version; import org.apache.zookeeper.jmx.ZKMBeanInfo; -import org.apache.zookeeper.server.ServerStats; -import org.apache.zookeeper.server.ZooKeeperServer; /** * This class implements the ZooKeeper server MBean interface. @@ -45,7 +43,7 @@ public String getClientPort() { try { return InetAddress.getLocalHost().getHostAddress() + ":" - + zks.getClientPort(); + + zks.getClientPort(); } catch (UnknownHostException e) { return "localhost:" + zks.getClientPort(); } Modified: hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java (original) +++ hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java Fri Feb 6 21:21:21 2009 @@ -187,6 +187,7 @@ MBeanRegistry.getInstance().register(jmxDataTreeBean, jmxServerBean); } catch (Exception e) { LOG.warn("Failed to register with JMX", e); + jmxDataTreeBean = null; } } @@ -194,14 +195,21 @@ LocalPeerBean localPeerBean) { // register with JMX - try { - MBeanRegistry.getInstance().unregister(self.jmxLeaderElectionBean); + if (self.jmxLeaderElectionBean != null) { + try { + MBeanRegistry.getInstance().unregister(self.jmxLeaderElectionBean); + } catch (Exception e) { + LOG.warn("Failed to register with JMX", e); + } self.jmxLeaderElectionBean = null; + } + try { jmxServerBean = followerBean; MBeanRegistry.getInstance().register(followerBean, localPeerBean); } catch (Exception e) { LOG.warn("Failed to register with JMX", e); + jmxServerBean = null; } } Modified: hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java (original) +++ hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java Fri Feb 6 21:21:21 2009 @@ -96,6 +96,7 @@ MBeanRegistry.getInstance().register(jmxDataTreeBean, jmxServerBean); } catch (Exception e) { LOG.warn("Failed to register with JMX", e); + jmxDataTreeBean = null; } } @@ -103,14 +104,21 @@ LocalPeerBean localPeerBean) { // register with JMX - try { - MBeanRegistry.getInstance().unregister(self.jmxLeaderElectionBean); + if (self.jmxLeaderElectionBean != null) { + try { + MBeanRegistry.getInstance().unregister(self.jmxLeaderElectionBean); + } catch (Exception e) { + LOG.warn("Failed to register with JMX", e); + } self.jmxLeaderElectionBean = null; + } + try { jmxServerBean = leaderBean; MBeanRegistry.getInstance().register(leaderBean, localPeerBean); } catch (Exception e) { LOG.warn("Failed to register with JMX", e); + jmxServerBean = null; } } Modified: hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java?rev=741731&r1=741730&r2=741731&view=diff ============================================================================== --- hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java (original) +++ hadoop/zookeeper/branches/branch-3.1/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java Fri Feb 6 21:21:21 2009 @@ -372,6 +372,7 @@ MBeanRegistry.getInstance().register(jmxLeaderElectionBean, jmxLocalPeerBean); } catch (Exception e) { LOG.warn("Failed to register with JMX", e); + jmxLeaderElectionBean = null; } if(electionAlg==null) @@ -407,13 +408,24 @@ ZKMBeanInfo p; if (getId() == s.id) { p = jmxLocalPeerBean = new LocalPeerBean(this); + try { + MBeanRegistry.getInstance().register(p, jmxQuorumBean); + } catch (Exception e) { + LOG.warn("Failed to register with JMX", e); + jmxLocalPeerBean = null; + } } else { p = new RemotePeerBean(s); + try { + MBeanRegistry.getInstance().register(p, jmxQuorumBean); + } catch (Exception e) { + LOG.warn("Failed to register with JMX", e); + } } - MBeanRegistry.getInstance().register(p, jmxQuorumBean); } } catch (Exception e) { LOG.warn("Failed to register with JMX", e); + jmxQuorumBean = null; } try {