You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Ted Zlatanov (JIRA)" <ji...@apache.org> on 2010/02/11 16:04:28 UTC
[jira] Issue Comment Edited: (CASSANDRA-764) bitmasks applied to
SliceRange
[ https://issues.apache.org/jira/browse/CASSANDRA-764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12832230#action_12832230 ]
Ted Zlatanov edited comment on CASSANDRA-764 at 2/11/10 3:03 PM:
-----------------------------------------------------------------
I put some output code (to System.err) which produced this output:
[junit] TableTest: running bitmask test
[junit] TableTest: no bitmasks
[junit] TableTest: pass 2 step 0 substep 0 got CF null
[junit] TableTest: assertBitmaskedColumns: got CF null at 1265838911425
[junit] ColumnFamilyStore.getTopLevelColumns: adding SSTable reader org.apache.cassandra.io.SSTableReader(path='/home/tzz/workspace/Cassandra/build/test/cassandra/data/Keyspace1/Standard1-2-Data.db') at 1265838911454
... (more SSTable readers get initialized here, all of them after the first)...
I removed all but the first (without any bitmasks) test, so the error is happening with what should be an unfiltered result set. pass 2 is after the cfs.forceBlockingFlush() call (pass 1 is 100% successful). Step 0 is the first bitmask set (which is an empty array). Substep 0 is the first test, shown below.
The sequence leads me to believe that the SSTable reader is getting iterated AFTER a null CF is returned by ColumnFamilyStore.getColumnFamily(). The timestamps show that a little bit after this call:
cf = cfStore.getColumnFamily(ROW, new QueryPath("Standard1"), "col096".getBytes(), "col099".getBytes(), bitmasks, false, 4);
returns null, the necessary SSTable iteration is happening. Thus the test gets a null CF and it fails, of course.
I looked at the code and am not sure yet how this is happening. I am attaching the testing patch, to be applied on top of 004, which is mostly throwaway debugging but shows the error clearly.
I will keep investigating.
update: the SSTable readers I saw here are asynchronous from the other TableTest unit tests and so a red herring. What a pain this is to debug.
was (Author: tzz):
I put some output code (to System.err) which produced this output:
[junit] TableTest: running bitmask test
[junit] TableTest: no bitmasks
[junit] TableTest: pass 2 step 0 substep 0 got CF null
[junit] TableTest: assertBitmaskedColumns: got CF null at 1265838911425
[junit] ColumnFamilyStore.getTopLevelColumns: adding SSTable reader org.apache.cassandra.io.SSTableReader(path='/home/tzz/workspace/Cassandra/build/test/cassandra/data/Keyspace1/Standard1-2-Data.db') at 1265838911454
... (more SSTable readers get initialized here, all of them after the first)...
I removed all but the first (without any bitmasks) test, so the error is happening with what should be an unfiltered result set. pass 2 is after the cfs.forceBlockingFlush() call (pass 1 is 100% successful). Step 0 is the first bitmask set (which is an empty array). Substep 0 is the first test, shown below.
The sequence leads me to believe that the SSTable reader is getting iterated AFTER a null CF is returned by ColumnFamilyStore.getColumnFamily(). The timestamps show that a little bit after this call:
cf = cfStore.getColumnFamily(ROW, new QueryPath("Standard1"), "col096".getBytes(), "col099".getBytes(), bitmasks, false, 4);
returns null, the necessary SSTable iteration is happening. Thus the test gets a null CF and it fails, of course.
I looked at the code and am not sure yet how this is happening. I am attaching the testing patch, to be applied on top of 004, which is mostly throwaway debugging but shows the error clearly.
I will keep investigating.
> bitmasks applied to SliceRange
> ------------------------------
>
> Key: CASSANDRA-764
> URL: https://issues.apache.org/jira/browse/CASSANDRA-764
> Project: Cassandra
> Issue Type: New Feature
> Components: Core
> Reporter: Ted Zlatanov
> Priority: Minor
> Attachments: 001-CASSANDRA-764-bitmasksparameter.patch, 002-CASSANDRA-764-bitmaskserialization.patch, 002-CASSANDRA-764-bitmaskserialization.patch, 002-CASSANDRA-764-bitmaskserialization.patch, 003-CASSANDRA-764-bitmasktests.patch, 004-CASSANDRA-764-moretests.patch, testing.patch
>
>
> Add bitmasks (OR of an array of ANDs) to the SliceRange. Make them optional.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.