Author: jbellis Date: Fri Nov 5 02:25:23 2010 New Revision: 1031404 URL: http://svn.apache.org/viewvc?rev=1031404&view=rev Log: add additional debug logging to ColumnFamilyStore.scan patch by jbellis
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1031404&r1=1031403&r2=1031404&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Fri Nov 5 02:25:23 2010 @@ -1260,6 +1260,8 @@ public class ColumnFamilyStore implement // TODO: allow merge join instead of just one index + loop IndexExpression primary = highestSelectivityPredicate(clause); ColumnFamilyStore indexCFS = getIndexedColumnFamilyStore(primary.column_name); + if (logger.isDebugEnabled()) + logger.debug("Primary scan clause is " + getComparator().getString(primary.column_name)); assert indexCFS != null; DecoratedKey indexKey = indexCFS.partitioner.decorateKey(primary.value); @@ -1275,6 +1277,7 @@ public class ColumnFamilyStore implement // otherwise, create an extraFilter to fetch by name the columns referenced by the additional expressions. if (getMaxRowSize() < DatabaseDescriptor.getColumnIndexSize()) { + logger.debug("Expanding slice filter to entire row to cover additional expressions"); firstFilter = new SliceQueryFilter(FBUtilities.EMPTY_BYTE_BUFFER, FBUtilities.EMPTY_BYTE_BUFFER, ((SliceQueryFilter) dataFilter).reversed, @@ -1282,6 +1285,7 @@ public class ColumnFamilyStore implement } else { + logger.debug("adding extraFilter to cover additional expressions"); SortedSet<ByteBuffer> columns = new TreeSet<ByteBuffer>(getComparator()); for (IndexExpression expr : clause.expressions) { @@ -1294,6 +1298,7 @@ public class ColumnFamilyStore implement } else { + logger.debug("adding columns to firstFilter to cover additional expressions"); // just add in columns that are not part of the resultset assert dataFilter instanceof NamesQueryFilter; SortedSet<ByteBuffer> columns = new TreeSet<ByteBuffer>(getComparator()); @@ -1324,6 +1329,9 @@ public class ColumnFamilyStore implement * so, we need to loop after starting with start_key, until we get to keys in the given `range`. * But, if the calling StorageProxy is doing a good job estimating data from each range, the range * should be pretty close to `start_key`. */ + if (logger.isDebugEnabled()) + logger.debug(String.format("Scanning index row %s:%s starting with %s", + indexCFS.columnFamily, indexKey, indexCFS.getComparator().getString(startKey))); QueryFilter indexFilter = QueryFilter.getSliceFilter(indexKey, new QueryPath(indexCFS.getColumnFamilyName()), startKey, @@ -1331,6 +1339,7 @@ public class ColumnFamilyStore implement false, clause.count); ColumnFamily indexRow = indexCFS.getColumnFamily(indexFilter); + logger.debug("fetched {}", indexRow); if (indexRow == null) break; @@ -1350,6 +1359,7 @@ public class ColumnFamilyStore implement // get the row columns requested, and additional columns for the expressions if necessary ColumnFamily data = getColumnFamily(new QueryFilter(dk, path, firstFilter)); + logger.debug("fetched data row {}", data); if (extraFilter != null) { // we might have gotten the expression columns in with the main data slice, but @@ -1367,6 +1377,7 @@ public class ColumnFamilyStore implement if (satisfies(data, clause, primary)) { + logger.debug("row {} satisfies all clauses", data); // cut the resultset back to what was requested, if necessary if (firstFilter != dataFilter) { Modified: cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java?rev=1031404&r1=1031403&r2=1031404&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java (original) +++ cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java Fri Nov 5 02:25:23 2010 @@ -238,7 +238,8 @@ public class ColumnFamilyStoreTest exten // verify that it's not being indexed under the deletion column value either IColumn deletion = rm.getColumnFamilies().iterator().next().iterator().next(); - IndexExpression expr0 = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ, deletion.value()); + ByteBuffer deletionLong = FBUtilities.toByteBuffer((long) FBUtilities.byteBufferToInt(deletion.value())); + IndexExpression expr0 = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ, deletionLong); IndexClause clause0 = new IndexClause(Arrays.asList(expr0), FBUtilities.EMPTY_BYTE_BUFFER, 100); rows = cfs.scan(clause0, range, filter); assert rows.isEmpty();