Repository: incubator-geode
Updated Branches:
  refs/heads/develop 7f4992c29 -> 9184b593f


GEODE-1803 Inefficient code in ClientMetadataService.getServerToFilterMap()

Created a Random to use in methods needing it.  Replaced Collections.shuffle()
with random selection from an ArrayList.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/9184b593
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/9184b593
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/9184b593

Branch: refs/heads/develop
Commit: 9184b593ffca411e03b3c438d93e04225ef038df
Parents: 7f4992c
Author: Bruce Schuchardt <bschucha...@pivotal.io>
Authored: Fri Aug 26 10:02:13 2016 -0700
Committer: Bruce Schuchardt <bschucha...@pivotal.io>
Committed: Fri Aug 26 10:17:42 2016 -0700

----------------------------------------------------------------------
 .../client/internal/ClientPartitionAdvisor.java | 23 +++++++++-----------
 1 file changed, 10 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9184b593/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/ClientPartitionAdvisor.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/ClientPartitionAdvisor.java
 
b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/ClientPartitionAdvisor.java
index d3b0cf3..c8a523d 100644
--- 
a/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/ClientPartitionAdvisor.java
+++ 
b/geode-core/src/main/java/com/gemstone/gemfire/cache/client/internal/ClientPartitionAdvisor.java
@@ -26,20 +26,18 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
+import org.apache.logging.log4j.Logger;
+
 import com.gemstone.gemfire.InternalGemFireException;
 import com.gemstone.gemfire.cache.FixedPartitionAttributes;
-import com.gemstone.gemfire.internal.cache.BucketServerLocation66;
 import com.gemstone.gemfire.cache.PartitionResolver;
 import com.gemstone.gemfire.cache.Region;
 import com.gemstone.gemfire.distributed.internal.ServerLocation;
 import com.gemstone.gemfire.internal.ClassPathLoader;
-import com.gemstone.gemfire.internal.cache.BucketServerLocation;
-import com.gemstone.gemfire.internal.cache.FixedPartitionAttributesImpl;
 import com.gemstone.gemfire.internal.cache.BucketServerLocation66;
-import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.internal.cache.FixedPartitionAttributesImpl;
 import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
 import com.gemstone.gemfire.internal.logging.LogService;
-import org.apache.logging.log4j.Logger;
 
 /**
  * Stores the information such as partition attributes and meta data details
@@ -66,6 +64,8 @@ public class ClientPartitionAdvisor {
   private Map<String, List<Integer>> fixedPAMap = null;
 
   private boolean fpaAttrsCompletes = false;
+  
+  private Random random = new Random();
 
   @SuppressWarnings("unchecked")
   public ClientPartitionAdvisor(int totalNumBuckets, String colocatedWith,
@@ -115,21 +115,18 @@ public class ClientPartitionAdvisor {
       if (locationsCopy.size() == 1) {
         return locationsCopy.get(0);
       }
-      int index = new Random().nextInt(locationsCopy.size() - 1);
+      int index = random.nextInt(locationsCopy.size());
       return locationsCopy.get(index);
     }
     return null;
   }
 
   public ServerLocation adviseRandomServerLocation() {
-    ArrayList<Integer> bucketList = new ArrayList<Integer>(
-        this.bucketServerLocationsMap.keySet());
-
-    if (bucketList.size() > 0) {
-      Collections.shuffle(bucketList);
+    ArrayList<Integer> bucketList = new 
ArrayList<Integer>(this.bucketServerLocationsMap.keySet());
+    int size = bucketList.size();
+    if (size > 0) {
       List<BucketServerLocation66> locations = this.bucketServerLocationsMap
-          .get(bucketList.get(0));
-
+          .get(bucketList.get(random.nextInt(size)));
       if (locations != null) {
         List<BucketServerLocation66> serverList = new 
ArrayList<BucketServerLocation66>(
             locations);

Reply via email to