Merge branch 'cassandra-3.11' into trunk

Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ffde38a2
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ffde38a2
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ffde38a2

Branch: refs/heads/trunk
Commit: ffde38a2567517da780c0411b0338d5a445ea551
Parents: f5adeeb 68f8966
Author: Benedict Elliott Smith <[email protected]>
Authored: Fri Aug 24 15:49:02 2018 +0100
Committer: Benedict Elliott Smith <[email protected]>
Committed: Fri Aug 24 15:49:02 2018 +0100

----------------------------------------------------------------------
 .../cassandra/utils/SortedBiMultiValMap.java    | 35 +++-----------------
 1 file changed, 5 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/ffde38a2/src/java/org/apache/cassandra/utils/SortedBiMultiValMap.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/utils/SortedBiMultiValMap.java
index 368d3f5,f628061..7b75fad
--- a/src/java/org/apache/cassandra/utils/SortedBiMultiValMap.java
+++ b/src/java/org/apache/cassandra/utils/SortedBiMultiValMap.java
@@@ -17,7 -17,8 +17,7 @@@
   */
  package org.apache.cassandra.utils;
  
- import java.util.Comparator;
+ import java.util.Collection;
 -import java.util.Comparator;
  import java.util.SortedMap;
  import java.util.TreeMap;
  
@@@ -36,40 -40,41 +36,15 @@@ public class SortedBiMultiValMap<K, V> 
          return new SortedBiMultiValMap<K, V>(new TreeMap<K,V>(), 
TreeMultimap.<V, K>create());
      }
  
--    public static <K, V> SortedBiMultiValMap<K, V> create(Comparator<K> 
keyComparator, Comparator<V> valueComparator)
--    {
--        if (keyComparator == null)
--            keyComparator = defaultComparator();
--        if (valueComparator == null)
--            valueComparator = defaultComparator();
--        return new SortedBiMultiValMap<K, V>(new TreeMap<K,V>(keyComparator), 
TreeMultimap.<V, K>create(valueComparator, keyComparator));
--    }
--
      public static <K extends Comparable<K>, V extends Comparable<V>> 
SortedBiMultiValMap<K, V> create(BiMultiValMap<K, V> map)
      {
          SortedBiMultiValMap<K, V> newMap = SortedBiMultiValMap.<K,V>create();
 -        copy(map, newMap);
 -        return newMap;
 -    }
 -
 -    public static <K, V> SortedBiMultiValMap<K, V> create(BiMultiValMap<K, V> 
map, Comparator<K> keyComparator, Comparator<V> valueComparator)
 -    {
 -        SortedBiMultiValMap<K, V> newMap = create(keyComparator, 
valueComparator);
 -        copy(map, newMap);
 -        return newMap;
 -    }
 -
 -    private static <K, V> void copy(BiMultiValMap<K, V> map, BiMultiValMap<K, 
V> newMap)
 -    {
          newMap.forwardMap.putAll(map);
-         newMap.reverseMap.putAll(map.inverse());
-         return newMap;
-     }
- 
-     public static <K, V> SortedBiMultiValMap<K, V> create(BiMultiValMap<K, V> 
map, Comparator<K> keyComparator, Comparator<V> valueComparator)
-     {
-         SortedBiMultiValMap<K, V> newMap = create(keyComparator, 
valueComparator);
-         newMap.forwardMap.putAll(map);
-         newMap.reverseMap.putAll(map.inverse());
+         // Put each individual TreeSet instead of Multimap#putAll(Multimap) 
to get linear complexity
+         // See CASSANDRA-14660
+         for (Entry<V, Collection<K>> entry : map.inverse().asMap().entrySet())
+             newMap.reverseMap.putAll(entry.getKey(), entry.getValue());
 +        return newMap;
      }
  
 -    @SuppressWarnings("unchecked")
--    private static <T> Comparator<T> defaultComparator()
--    {
-         return new Comparator<T>()
-         {
-             @SuppressWarnings("unchecked")
-             public int compare(T o1, T o2)
-             {
-                 return ((Comparable<T>) o1).compareTo(o2);
-             }
-         };
 -        return DEFAULT_COMPARATOR;
--    }
  }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to