You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/10/27 15:40:23 UTC

svn commit: r830213 - in /incubator/cassandra/trunk/src/java/org/apache/cassandra: locator/AbstractReplicationStrategy.java service/StorageService.java

Author: jbellis
Date: Tue Oct 27 14:40:23 2009
New Revision: 830213

URL: http://svn.apache.org/viewvc?rev=830213&view=rev
Log:
rename getRangeMap -> getRangeAddresses; add inverse getAddressRanges
patch by jbellis; reviewed by goffinet for CASSANDRA-483

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
    incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java?rev=830213&r1=830212&r2=830213&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java Tue Oct 27 14:40:23 2009
@@ -23,6 +23,8 @@
 
 import org.apache.log4j.Logger;
 
+import org.apache.commons.lang.StringUtils;
+
 import org.apache.cassandra.dht.IPartitioner;
 import org.apache.cassandra.dht.Range;
 import org.apache.cassandra.dht.Token;
@@ -97,7 +99,7 @@
             tokenToEndPointMap.put(t, ep);
             try
             {
-                for (Range r : getRangeMap(tokenToEndPointMap).get(ep))
+                for (Range r : getAddressRanges(tokenToEndPointMap).get(ep))
                 {
                     if (r.contains(token))
                     {
@@ -164,9 +166,9 @@
         return map;
     }
 
-    // TODO this is pretty inefficient.
+    // TODO this is pretty inefficient. also the inverse (getRangeAddresses) below.
     // fixing this probably requires merging tokenmetadata into replicationstrategy, so we can cache/invalidate cleanly
-    protected Map<InetAddress, Set<Range>> getRangeMap(Map<Token, InetAddress> tokenMap)
+    public Map<InetAddress, Set<Range>> getAddressRanges(Map<Token, InetAddress> tokenMap)
     {
         Map<InetAddress, Set<Range>> map = new HashMap<InetAddress, Set<Range>>();
 
@@ -187,9 +189,27 @@
         return map;
     }
 
-    public Map<InetAddress, Set<Range>> getRangeMap()
+    public Map<Range, Set<InetAddress>> getRangeAddresses(Map<Token, InetAddress> tokenMap)
+    {
+        Map<Range, Set<InetAddress>> map = new HashMap<Range, Set<InetAddress>>();
+
+        for (Token token : tokenMap.keySet())
+        {
+            Range range = getPrimaryRangeFor(token, tokenMap);
+            HashSet<InetAddress> addresses = new HashSet<InetAddress>();
+            for (InetAddress ep : getNaturalEndpoints(token, tokenMap))
+            {
+                addresses.add(ep);
+            }
+            map.put(range, addresses);
+        }
+
+        return map;
+    }
+
+    public Map<InetAddress, Set<Range>> getAddressRanges()
     {
-        return getRangeMap(tokenMetadata_.cloneTokenEndPointMap());
+        return getAddressRanges(tokenMetadata_.cloneTokenEndPointMap());
     }
 
     public Range getPrimaryRangeFor(Token right, Map<Token, InetAddress> tokenToEndPointMap)

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=830213&r1=830212&r2=830213&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Tue Oct 27 14:40:23 2009
@@ -670,7 +670,7 @@
      */
     Set<Range> getRangesForEndPoint(InetAddress ep)
     {
-        return replicationStrategy_.getRangeMap().get(ep);
+        return replicationStrategy_.getAddressRanges().get(ep);
     }
         
     /**