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.