[jboss-cvs] JBossAS SVN: r77622 - trunk/cluster/src/main/org/jboss/ha/framework/server/util.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Aug 28 15:47:17 EDT 2008


Author: pferraro
Date: 2008-08-28 15:47:17 -0400 (Thu, 28 Aug 2008)
New Revision: 77622

Modified:
   trunk/cluster/src/main/org/jboss/ha/framework/server/util/TopologyMonitorService.java
Log:
[JBAS-5441] Ensure misc HAPartition-based services can handle concurrent JGroups requests.
Code cleanup.  No significant changes.

Modified: trunk/cluster/src/main/org/jboss/ha/framework/server/util/TopologyMonitorService.java
===================================================================
--- trunk/cluster/src/main/org/jboss/ha/framework/server/util/TopologyMonitorService.java	2008-08-28 19:45:01 UTC (rev 77621)
+++ trunk/cluster/src/main/org/jboss/ha/framework/server/util/TopologyMonitorService.java	2008-08-28 19:47:17 UTC (rev 77622)
@@ -21,20 +21,21 @@
   */
 package org.jboss.ha.framework.server.util;
 
+import java.io.IOException;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.Vector;
-import java.io.IOException;
+
+import javax.management.ObjectName;
 import javax.naming.InitialContext;
-import javax.management.ObjectName;
 
+import org.apache.log4j.MDC;
 import org.jboss.ha.framework.interfaces.HAPartition;
 import org.jboss.ha.framework.interfaces.HAPartition.AsynchHAMembershipListener;
 import org.jboss.ha.framework.server.HAPartitionLocator;
+import org.jboss.logging.Logger;
 import org.jboss.system.ServiceMBeanSupport;
 import org.jboss.system.server.ServerConfigUtil;
-import org.jboss.logging.Logger;
-import org.apache.log4j.MDC;
 
 /** A cluster parition membership monitor. It can be used to view how
  the nodes in a cluster are seeing the topology change using either email or
@@ -79,55 +80,63 @@
  @author Scott.Stark at jboss.org
  @version $Revision$
  */
-public class TopologyMonitorService extends ServiceMBeanSupport
+public class TopologyMonitorService
+   extends ServiceMBeanSupport
    implements TopologyMonitorServiceMBean, AsynchHAMembershipListener
 {
-   private static final String CHANGE_NAME = TopologyMonitorService.class.getName()
-         + ".membershipChanged";
+   private static final String CHANGE_NAME = TopologyMonitorService.class.getName() + ".membershipChanged";
+
    private static Logger changeLog = Logger.getLogger(CHANGE_NAME);
-   private String partitionName = ServerConfigUtil.getDefaultPartitionName();
-   private HAPartition partition;
+
+   private volatile String partitionName = ServerConfigUtil.getDefaultPartitionName();
+
+   private volatile HAPartition partition;
+
    private String hostname;
-   private ObjectName triggerServiceName;
 
+   private volatile ObjectName triggerServiceName;
+
    public TopologyMonitorService()
    {
    }
 
    // --- Begin ServiceMBeanSupport overriden methods
-   
-   
+
+   @Override
    protected void startService() throws Exception
    {
-      if (partition == null)
+      if (this.partition == null)
       {
-         partition = HAPartitionLocator.getHAPartitionLocator().getHAPartition(partitionName, null);         
+         this.partition = HAPartitionLocator.getHAPartitionLocator().getHAPartition(this.partitionName, null);
       }
       // Register as a listener of cluster membership changes
-      partition.registerMembershipListener(this);
-      log.info("Registered as MembershipListener");
+      this.partition.registerMembershipListener(this);
+      this.log.info("Registered as MembershipListener");
       try
       {
-         hostname = InetAddress.getLocalHost().getHostName();
+         this.hostname = InetAddress.getLocalHost().getHostName();
       }
-      catch(IOException e)
+      catch (IOException e)
       {
-         log.warn("Failed to lookup local hostname", e);
-         hostname = "<unknown>";
+         this.log.warn("Failed to lookup local hostname", e);
+         this.hostname = "<unknown>";
       }
    }
 
+   @Override
    protected void stopService() throws Exception
    {
-      partition.unregisterMembershipListener(this);
+      this.partition.unregisterMembershipListener(this);
    }
-// --- End ServiceMBeanSupport overriden methods
 
-// --- Begin TopologyMonitorServiceMBean interface methods
+   // --- End ServiceMBeanSupport overriden methods
+
+   // --- Begin TopologyMonitorServiceMBean interface methods
    public String getPartitionName()
    {
-      return (partition == null ? partitionName : partition.getPartitionName());
+      return (this.partition == null) ? this.partitionName : this.partition.getPartitionName();
    }
+
    public void setPartitionName(String name)
    {
       this.partitionName = name;
@@ -140,8 +149,9 @@
 
    public ObjectName getTriggerServiceName()
    {
-      return triggerServiceName;
+      return this.triggerServiceName;
    }
+
    public void setTriggerServiceName(ObjectName triggerServiceName)
    {
       this.triggerServiceName = triggerServiceName;
@@ -149,81 +159,79 @@
 
    public Vector getClusterNodes()
    {
-      Vector view = null;
       try
       {
          InitialContext ctx = new InitialContext();
-         String jndiName = "/HAPartition/" + partitionName;
+         String jndiName = "/HAPartition/" + this.partitionName;
          HAPartition partition = (HAPartition) ctx.lookup(jndiName);
-         view = partition.getCurrentView();
+         return partition.getCurrentView();
       }
-      catch(Exception e)
+      catch (Exception e)
       {
-         log.error("Failed to access HAPartition state", e);
+         this.log.error("Failed to access HAPartition state", e);
+         return null;
       }
-      return view;
    }
 
-// --- End TopologyMonitorServiceMBean interface methods
+   // --- End TopologyMonitorServiceMBean interface methods
 
-// --- Begin HAMembershipListener interface methods
+   // --- Begin HAMembershipListener interface methods
    /** Called when a new partition topology occurs.
     * @param deadMembers A list of nodes that have died since the previous view
     * @param newMembers A list of nodes that have joined the partition since
     * the previous view
     * @param allMembers A list of nodes that built the current view
     */
-   public void membershipChanged(final Vector deadMembers, final Vector newMembers,
-         final Vector allMembers)
+   public void membershipChanged(final Vector deadMembers, final Vector newMembers, final Vector allMembers)
    {
       MDC.put("RegexEventEvaluator", "End membershipChange.*");
       ArrayList removed = new ArrayList();
       ArrayList added = new ArrayList();
       ArrayList members = new ArrayList();
-      changeLog.info("Begin membershipChanged info, hostname="+hostname);
-      changeLog.info("DeadMembers: size="+deadMembers.size());
-      for(int m = 0; m < deadMembers.size(); m ++)
+      changeLog.info("Begin membershipChanged info, hostname=" + this.hostname);
+      changeLog.info("DeadMembers: size=" + deadMembers.size());
+      for (int m = 0; m < deadMembers.size(); m++)
       {
-         AddressPort addrInfo = getMemberAddress(deadMembers.get(m));
+         AddressPort addrInfo = this.getMemberAddress(deadMembers.get(m));
          removed.add(addrInfo);
          changeLog.info(addrInfo);
       }
-      changeLog.info("NewMembers: size="+newMembers.size());
-      for(int m = 0; m < newMembers.size(); m ++)
+      changeLog.info("NewMembers: size=" + newMembers.size());
+      for (int m = 0; m < newMembers.size(); m++)
       {
-         AddressPort addrInfo = getMemberAddress(newMembers.get(m));
+         AddressPort addrInfo = this.getMemberAddress(newMembers.get(m));
          added.add(addrInfo);
          changeLog.info(addrInfo);
       }
-      changeLog.info("AllMembers: size="+allMembers.size());
-      for(int m = 0; m < allMembers.size(); m ++)
+      changeLog.info("AllMembers: size=" + allMembers.size());
+      for (int m = 0; m < allMembers.size(); m++)
       {
-         AddressPort addrInfo = getMemberAddress(allMembers.get(m));
+         AddressPort addrInfo = this.getMemberAddress(allMembers.get(m));
          members.add(addrInfo);
          changeLog.info(addrInfo);
       }
       // Notify the trigger MBean
-      if( triggerServiceName != null )
+      if (this.triggerServiceName != null)
       {
-         changeLog.info("Invoking trigger service: "+triggerServiceName);
+         changeLog.info("Invoking trigger service: " + this.triggerServiceName);
          try
          {
-            Object[] params = {removed, added, members, CHANGE_NAME};
-            String[] sig = {"java.util.ArrayList", "java.util.ArrayList",
-               "java.util.ArrayList", "java.lang.String"};
-            server.invoke(triggerServiceName, "membershipChanged", params, sig);
+            Object[] params = { removed, added, members, CHANGE_NAME };
+            String[] sig = { "java.util.ArrayList", "java.util.ArrayList", "java.util.ArrayList", "java.lang.String" };
+            this.server.invoke(this.triggerServiceName, "membershipChanged", params, sig);
          }
-         catch(Throwable t)
+         catch (Throwable t)
          {
-            changeLog.error("Failed to notify trigger service: "+triggerServiceName, t);
-            log.debug("Failed to notify trigger service: "+triggerServiceName, t);
+            changeLog.error("Failed to notify trigger service: " + this.triggerServiceName, t);
+            this.log.debug("Failed to notify trigger service: " + this.triggerServiceName, t);
          }
       }
-      changeLog.info("End membershipChanged info, hostname="+hostname);
+      changeLog.info("End membershipChanged info, hostname=" + this.hostname);
       MDC.remove("RegexEventEvaluator");
    }
-// --- End HAMembershipListener interface methods
 
+   // --- End HAMembershipListener interface methods
+
    /** Use reflection to access the address InetAddress and port if they exist
     * in the Address implementation
     */
@@ -232,24 +240,24 @@
       AddressPort info = null;
       try
       {
-         org.jboss.ha.framework.interfaces.ClusterNode node =
-               (org.jboss.ha.framework.interfaces.ClusterNode)addr;
+         org.jboss.ha.framework.interfaces.ClusterNode node = (org.jboss.ha.framework.interfaces.ClusterNode) addr;
 
          InetAddress inetAddr = node.getIpAddress();
          Integer port = new Integer(node.getPort());
          info = new AddressPort(inetAddr, port);
       }
-      catch(Exception e)
+      catch (Exception e)
       {
-         log.warn("Failed to obtain InetAddress/port from addr: "+addr, e);
+         this.log.warn("Failed to obtain InetAddress/port from addr: " + addr, e);
       }
       return info;
    }
 
    public static class AddressPort
    {
-      InetAddress addr;
-      Integer port;
+      private InetAddress addr;
+      private Integer port;
+
       AddressPort(InetAddress addr, Integer port)
       {
          this.addr = addr;
@@ -258,23 +266,28 @@
 
       public Integer getPort()
       {
-         return port;
+         return this.port;
       }
+
       public InetAddress getInetAddress()
       {
-         return addr;
+         return this.addr;
       }
+
       public String getHostAddress()
       {
-         return addr.getHostAddress();
+         return this.addr.getHostAddress();
       }
+
       public String getHostName()
       {
-         return addr.getHostName();
+         return this.addr.getHostName();
       }
+
+      @Override
       public String toString()
       {
-         return "{host("+addr+"), port("+port+")}";
+         return "{host(" + this.addr + "), port(" + this.port + ")}";
       }
    }
 }




More information about the jboss-cvs-commits mailing list