[jboss-cvs] JBossAS SVN: r109756 - trunk/cluster/src/main/java/org/jboss/ha/singleton.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Dec 7 12:01:19 EST 2010


Author: pferraro
Date: 2010-12-07 12:01:17 -0500 (Tue, 07 Dec 2010)
New Revision: 109756

Modified:
   trunk/cluster/src/main/java/org/jboss/ha/singleton/PreferredMasterElectionPolicy.java
Log:
JBAS-8710 Revert drunken commit...

Modified: trunk/cluster/src/main/java/org/jboss/ha/singleton/PreferredMasterElectionPolicy.java
===================================================================
--- trunk/cluster/src/main/java/org/jboss/ha/singleton/PreferredMasterElectionPolicy.java	2010-12-07 15:47:16 UTC (rev 109755)
+++ trunk/cluster/src/main/java/org/jboss/ha/singleton/PreferredMasterElectionPolicy.java	2010-12-07 17:01:17 UTC (rev 109756)
@@ -29,6 +29,7 @@
 import java.util.List;
 
 import org.jboss.ha.framework.interfaces.ClusterNode;
+import org.jboss.logging.Logger;
 
 /**
  * Election policy that chooses the node where the singleton should run based on 
@@ -44,6 +45,8 @@
    extends HASingletonElectionPolicySimple 
    implements PreferredMasterElectionPolicyMBean
 {
+   private Logger log = Logger.getLogger(this.getClass());
+   
    private volatile InetSocketAddress preferredMaster;
    
    // -------------------------------------------------------------  Properties
@@ -51,7 +54,6 @@
    /**
     * @see PreferredMasterElectionPolicyMBean#setPreferredMaster(String)
     */
-   @Override
    public void setPreferredMaster(String value)
    {
       String node = (value != null) ? value.trim() : "";
@@ -89,7 +91,6 @@
    /**
     * @see PreferredMasterElectionPolicyMBean#getPreferredMaster()
     */
-   @Override
    public String getPreferredMaster()
    {
       InetSocketAddress address = this.preferredMaster;
@@ -109,16 +110,36 @@
       // If preferred master is defined and contained in cluster, return it
       if (sockAddress != null) 
       {
-         for (ClusterNode candidate: candidates)
+         InetAddress address = sockAddress.getAddress();
+         int port = sockAddress.getPort();
+         
+         // First find by address
+         master = this.find(candidates, address.getHostAddress(), port);
+         
+         if (master == null)
          {
-            if ((candidate.getPort() == sockAddress.getPort()) && candidate.getIpAddress().equals(sockAddress.getAddress()))
-            {
-               master = candidate;
-               break;
-            }
+            // Then try by hostname
+            master = this.find(candidates, address.getHostName(), port);
          }
       }
       
       return (master != null) ? master : super.elect(candidates);
    }
+   
+   private ClusterNode find(List<ClusterNode> candidates, String host, int port)
+   {
+      String node = host + ":" + port;
+      
+      this.log.debug("Checking if " + node + " is in candidate list: " + candidates);
+      
+      for (ClusterNode candidate: candidates)
+      {
+         if (candidate.getName().equals(node))
+         {
+            return candidate;
+         }
+      }
+      
+      return null;
+   }
 }
\ No newline at end of file



More information about the jboss-cvs-commits mailing list