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();