Author: mahadev
Date: Fri Mar 19 17:29:50 2010
New Revision: 925345

URL: http://svn.apache.org/viewvc?rev=925345&view=rev
Log:
ZOOKEEPER-717.  add a preferred list to the instancemanager (breed via mahadev)

Modified:
    hadoop/zookeeper/trunk/CHANGES.txt
    
hadoop/zookeeper/trunk/src/java/systest/org/apache/zookeeper/test/system/InstanceManager.java

Modified: hadoop/zookeeper/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=925345&r1=925344&r2=925345&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/CHANGES.txt (original)
+++ hadoop/zookeeper/trunk/CHANGES.txt Fri Mar 19 17:29:50 2010
@@ -310,6 +310,9 @@ BUGFIXES: 
 
   ZOOKEEPER-718. the fatjar is missing libraries (ben via mahadev)
 
+  ZOOKEEPER-717.  add a preferred list to the instancemanager (breed via
+  mahadev)
+
 IMPROVEMENTS:
   ZOOKEEPER-473. cleanup junit tests to eliminate false positives due to
   "socket reuse" and failure to close client (phunt via mahadev)

Modified: 
hadoop/zookeeper/trunk/src/java/systest/org/apache/zookeeper/test/system/InstanceManager.java
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/systest/org/apache/zookeeper/test/system/InstanceManager.java?rev=925345&r1=925344&r2=925345&view=diff
==============================================================================
--- 
hadoop/zookeeper/trunk/src/java/systest/org/apache/zookeeper/test/system/InstanceManager.java
 (original)
+++ 
hadoop/zookeeper/trunk/src/java/systest/org/apache/zookeeper/test/system/InstanceManager.java
 Fri Mar 19 17:29:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.zookeeper.test.system;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -67,6 +69,16 @@ public class InstanceManager implements 
             this.weight = weight;
         }
     }
+    private static List<String> preferredList = new ArrayList<String>();
+    static {
+        String list = System.getProperty("ic.preferredList");
+        if (list != null) {
+            preferredList = Arrays.asList(list.split(","));
+            System.err.println("Preferred List: " + preferredList);
+        } else {
+            System.err.println("Preferred List is empty");
+        }
+    }
     private HashMap<String, HashSet<Assigned>> assignments = new 
HashMap<String, HashSet<Assigned>>();
     private HashMap<String, Assigned> instanceToAssignment = new 
HashMap<String, Assigned>();
     public InstanceManager(ZooKeeper zk, String prefix) throws 
KeeperException, InterruptedException {
@@ -174,6 +186,19 @@ public class InstanceManager implements 
         // find most idle node
         String mostIdle = null;
         int mostIdleWeight = Integer.MAX_VALUE;
+        for(String preferred: preferredList) {
+            HashSet<Assigned> assignmentList = assignments.get(preferred);
+            int w = 0;
+            if (assignmentList != null) {
+                for(Assigned a: assignmentList) {
+                    w += a.weight;
+                }
+                if (w < mostIdleWeight) {
+                    mostIdleWeight = w;
+                    mostIdle = preferred;
+                }
+            }
+        }
         for(Entry<String, HashSet<Assigned>> e: assignments.entrySet()) {
             int w = 0;
             for(Assigned a: e.getValue()) {


Reply via email to