Author: jbellis Date: Tue Jan 11 14:12:25 2011 New Revision: 1057646 URL: http://svn.apache.org/viewvc?rev=1057646&view=rev Log: merge from 0.7
Modified: cassandra/trunk/ (props changed) cassandra/trunk/CHANGES.txt cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java (props changed) cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java Propchange: cassandra/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jan 11 14:12:25 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121 -/cassandra/branches/cassandra-0.7:1026516-1056127 +/cassandra/branches/cassandra-0.7:1026516-1057644 /cassandra/branches/cassandra-0.7.0:1053690-1055654 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3:774578-796573 Modified: cassandra/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1057646&r1=1057645&r2=1057646&view=diff ============================================================================== --- cassandra/trunk/CHANGES.txt (original) +++ cassandra/trunk/CHANGES.txt Tue Jan 11 14:12:25 2011 @@ -7,18 +7,19 @@ * buffer network stack to avoid inefficient small TCP messages while avoiding the nagle/delayed ack problem (CASSANDRA-1896) * check log4j configuration for changes every 10s (CASSANDRA-1525, 1907) - * More-efficient cross-DC replication (CASSANDRA-1530) + * more-efficient cross-DC replication (CASSANDRA-1530) * upgrade to TFastFramedTransport (CASSANDRA-1743) * avoid polluting page cache with commitlog or sstable writes and seq scan operations (CASSANDRA-1470) * add RMI authentication options to nodetool (CASSANDRA-1921) - * Make snitches configurable at runtime (CASSANDRA-1374) + * make snitches configurable at runtime (CASSANDRA-1374) * retry hadoop split requests on connection failure (CASSANDRA-1927) * implement describeOwnership for BOP, COPP (CASSANDRA-1928) * make read repair behave as expected for ConsistencyLevel > ONE (CASSANDRA-982) * distributed test harness (CASSANDRA-1859) * reduce flush lock contention (CASSANDRA-1930) + * optimize supercolumn deserialization (CASSANDRA-1891) 0.7.0-dev Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jan 11 14:12:25 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1056127 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1057644 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jan 11 14:12:25 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1056127 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1057644 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jan 11 14:12:25 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1056127 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1057644 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jan 11 14:12:25 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1056127 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1057644 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jan 11 14:12:25 2011 @@ -1,5 +1,5 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1056127 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1057644 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198 Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java?rev=1057646&r1=1057645&r2=1057646&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java Tue Jan 11 14:12:25 2011 @@ -223,7 +223,7 @@ public class Memtable implements Compara final Collection<IColumn> filteredColumns = filter.reversed ? cf.getReverseSortedColumns() : cf.getSortedColumns(); // ok to not have subcolumnComparator since we won't be adding columns to this object - IColumn startColumn = isSuper ? new SuperColumn(filter.start, null) : new Column(filter.start); + IColumn startColumn = isSuper ? new SuperColumn(filter.start, (AbstractType)null) : new Column(filter.start); Comparator<IColumn> comparator = filter.getColumnComparator(typeComparator); final PeekingIterator<IColumn> filteredIter = Iterators.peekingIterator(filteredColumns.iterator()); Modified: cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java?rev=1057646&r1=1057645&r2=1057646&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/db/SuperColumn.java Tue Jan 11 14:12:25 2011 @@ -34,6 +34,7 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.io.ICompactSerializer2; +import org.apache.cassandra.io.util.ColumnSortedMap; import org.apache.cassandra.io.util.DataOutputBuffer; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; @@ -41,7 +42,7 @@ import org.apache.cassandra.utils.FBUtil public class SuperColumn implements IColumn, IColumnContainer { - private static Logger logger_ = LoggerFactory.getLogger(SuperColumn.class); + private static Logger logger_ = LoggerFactory.getLogger(SuperColumn.class); public static SuperColumnSerializer serializer(AbstractType comparator) { @@ -58,7 +59,7 @@ public class SuperColumn implements ICol this(name, new ConcurrentSkipListMap<ByteBuffer, IColumn>(comparator)); } - private SuperColumn(ByteBuffer name, ConcurrentSkipListMap<ByteBuffer, IColumn> columns) + SuperColumn(ByteBuffer name, ConcurrentSkipListMap<ByteBuffer, IColumn> columns) { assert name != null; assert name.remaining() <= IColumn.MAX_NAME_LENGTH; @@ -317,6 +318,8 @@ public class SuperColumn implements ICol class SuperColumnSerializer implements ICompactSerializer2<IColumn> { + private static Logger logger = LoggerFactory.getLogger(SuperColumnSerializer.class); + private AbstractType comparator; public SuperColumnSerializer(AbstractType comparator) @@ -331,7 +334,7 @@ class SuperColumnSerializer implements I public void serialize(IColumn column, DataOutput dos) { - SuperColumn superColumn = (SuperColumn)column; + SuperColumn superColumn = (SuperColumn)column; FBUtilities.writeShortByteArray(column.name(), dos); try { @@ -354,21 +357,23 @@ class SuperColumnSerializer implements I public IColumn deserialize(DataInput dis) throws IOException { ByteBuffer name = FBUtilities.readShortByteArray(dis); - SuperColumn superColumn = new SuperColumn(name, comparator); int localDeleteTime = dis.readInt(); if (localDeleteTime != Integer.MIN_VALUE && localDeleteTime <= 0) { throw new IOException("Invalid localDeleteTime read: " + localDeleteTime); } - superColumn.markForDeleteAt(localDeleteTime, dis.readLong()); + long markedForDeleteAt = dis.readLong(); /* read the number of columns */ int size = dis.readInt(); - for ( int i = 0; i < size; ++i ) + ColumnSerializer serializer = Column.serializer(); + ColumnSortedMap preSortedMap = new ColumnSortedMap(comparator, serializer, dis, size); + SuperColumn superColumn = new SuperColumn(name, new ConcurrentSkipListMap<ByteBuffer,IColumn>(preSortedMap)); + if (localDeleteTime != Integer.MIN_VALUE && localDeleteTime <= 0) { - IColumn subColumn = Column.serializer().deserialize(dis); - superColumn.addColumn(subColumn); + throw new IOException("Invalid localDeleteTime read: " + localDeleteTime); } + superColumn.markForDeleteAt(localDeleteTime, markedForDeleteAt); return superColumn; } } Modified: cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java?rev=1057646&r1=1057645&r2=1057646&view=diff ============================================================================== --- cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java (original) +++ cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java Tue Jan 11 14:12:25 2011 @@ -36,6 +36,7 @@ import org.apache.cassandra.io.sstable.D import org.apache.cassandra.io.sstable.SSTableReader; import static org.apache.cassandra.utils.FBUtilities.hexToBytes; import static org.apache.cassandra.io.sstable.SSTableUtils.tempSSTableFile; +import static org.junit.Assert.assertEquals; import org.apache.cassandra.Util; @@ -82,6 +83,9 @@ public class SSTableImportTest extends S QueryFilter qf = QueryFilter.getNamesFilter(Util.dk("rowA"), new QueryPath("Super4", null, null), ByteBufferUtil.bytes("superA")); ColumnFamily cf = qf.getSSTableColumnIterator(reader).getColumnFamily(); IColumn superCol = cf.getColumn(ByteBufferUtil.bytes("superA")); - assert superCol.getSubColumn(ByteBufferUtil.bytes("colAA")).value().equals(ByteBuffer.wrap(hexToBytes("76616c75654141"))); + assert superCol != null; + assert superCol.getSubColumns().size() > 0; + IColumn subColumn = superCol.getSubColumn(ByteBufferUtil.bytes("colAA")); + assert subColumn.value().equals(ByteBuffer.wrap(hexToBytes("76616c75654141"))); } }