mirror of https://github.com/apache/cassandra
r/m unused constructors. Use concurrent containers because while get is iterating over columns (EBM is used as the column container by CF) the memtable can continue to modify SuperColumns.
git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@761413 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6fc6e048a3
commit
8ef8b192dd
|
|
@ -19,10 +19,14 @@
|
||||||
package org.apache.cassandra.db;
|
package org.apache.cassandra.db;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.*;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.ConcurrentSkipListSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.SortedSet;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
import org.apache.cassandra.db.ColumnComparatorFactory.ComparatorType;
|
import org.apache.cassandra.db.ColumnComparatorFactory.ComparatorType;
|
||||||
import org.apache.cassandra.service.StorageService;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -31,19 +35,13 @@ import org.apache.cassandra.service.StorageService;
|
||||||
|
|
||||||
class EfficientBidiMap implements Serializable
|
class EfficientBidiMap implements Serializable
|
||||||
{
|
{
|
||||||
private Map<String, IColumn> map_ = new HashMap<String, IColumn>();
|
private Map<String, IColumn> map_;
|
||||||
private SortedSet<IColumn> sortedSet_;
|
private SortedSet<IColumn> sortedSet_;
|
||||||
private Comparator<IColumn> columnComparator_;
|
private Comparator<IColumn> columnComparator_;
|
||||||
|
|
||||||
EfficientBidiMap()
|
|
||||||
{
|
|
||||||
this(ColumnComparatorFactory.getComparator(ComparatorType.TIMESTAMP));
|
|
||||||
}
|
|
||||||
|
|
||||||
EfficientBidiMap(Comparator<IColumn> columnComparator)
|
EfficientBidiMap(Comparator<IColumn> columnComparator)
|
||||||
{
|
{
|
||||||
columnComparator_ = columnComparator;
|
this(new ConcurrentHashMap<String, IColumn>(), new ConcurrentSkipListSet<IColumn>(columnComparator), columnComparator);
|
||||||
sortedSet_ = new TreeSet<IColumn>(columnComparator);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EfficientBidiMap(Map<String, IColumn> map, SortedSet<IColumn> set, Comparator<IColumn> comparator)
|
EfficientBidiMap(Map<String, IColumn> map, SortedSet<IColumn> set, Comparator<IColumn> comparator)
|
||||||
|
|
@ -53,18 +51,6 @@ class EfficientBidiMap implements Serializable
|
||||||
columnComparator_ = comparator;
|
columnComparator_ = comparator;
|
||||||
}
|
}
|
||||||
|
|
||||||
EfficientBidiMap(Object[] objects, Comparator<IColumn> columnComparator)
|
|
||||||
{
|
|
||||||
columnComparator_ = columnComparator;
|
|
||||||
sortedSet_ = new TreeSet<IColumn>(columnComparator);
|
|
||||||
for ( Object object : objects )
|
|
||||||
{
|
|
||||||
IColumn column = (IColumn)object;
|
|
||||||
sortedSet_.add(column);
|
|
||||||
map_.put(column.name(), column);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Comparator<IColumn> getComparator()
|
public Comparator<IColumn> getComparator()
|
||||||
{
|
{
|
||||||
return columnComparator_;
|
return columnComparator_;
|
||||||
|
|
@ -116,8 +102,8 @@ class EfficientBidiMap implements Serializable
|
||||||
|
|
||||||
EfficientBidiMap cloneMe()
|
EfficientBidiMap cloneMe()
|
||||||
{
|
{
|
||||||
Map<String, IColumn> map = new HashMap<String, IColumn>(map_);
|
Map<String, IColumn> map = new ConcurrentHashMap<String, IColumn>(map_);
|
||||||
SortedSet<IColumn> set = new TreeSet<IColumn>(sortedSet_);
|
SortedSet<IColumn> set = new ConcurrentSkipListSet<IColumn>(sortedSet_);
|
||||||
return new EfficientBidiMap(map, set, columnComparator_);
|
return new EfficientBidiMap(map, set, columnComparator_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue