[ 
https://issues.apache.org/jira/browse/CASSANDRA-6612?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sylvain Lebresne updated CASSANDRA-6612:
----------------------------------------

    Attachment: 6612.txt

I do am able to reproduce with the example of the description (which I've 
pushed as a dtest).

There is actually two small problem in SecondaryIndexManager. The first one is 
in the {{hasIndexFor}} that clearly have a bogus logic when there is more than 
one searcher. It's this error that made the code take the wrong path and 
trigger the assertion. That said, once fixed, we still have a problem: the 
{{search}} is unhappy because we have more than one searcher. And indeed, we've 
never supported more than one searcher because even if we have multiple 
indexes, we should still have only one searcher for all of them (though we may 
have other searcher for custom indexes). That "grouping" of indexes is done by 
{{getIndexSearchersForQuery}}. However, that method was grouping using the 
class name, which didn't result in all internal index sharing the same searcher 
since we have different concrete implementation depending on whether the index 
is on a partition key column, clustering key one or regular one. Anyway, 
attaching a slightly hackish but simple solution that just make sure we group 
all internal indexes properly in {{getIndexSearchersForQuery}} as we should. We 
should probably overhaul the {{SecondaryIndexManager}} class at some point 
because it's pretty confusing imo but that's not for this ticket.

> Query failing due to AssertionError
> -----------------------------------
>
>                 Key: CASSANDRA-6612
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6612
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: Cassandra-2.0.4, CQL3, datastax driver 2.0.0-rc2
>            Reporter: A Verma
>            Assignee: Ryan McGuire
>         Attachments: 6612.txt
>
>
> I am trying out Cassandra for the first time and running it locally for 
> simple session management db. [Cassandra-2.0.4, CQL3, datastax driver 
> 2.0.0-rc2]
> The following count query works fine when there is no data in the table:
> {code}
> select count(*) from session_data where app_name=? and account=? and 
> last_access > ?
> {code}
> But after even a single row is inserted into the table, the query fails with 
> the following error:
> {code}
>     java.lang.AssertionError
>       at 
> org.apache.cassandra.db.filter.ExtendedFilter$WithClauses.getExtraFilter(ExtendedFilter.java:258)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.filter(ColumnFamilyStore.java:1719)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1674)
>       at 
> org.apache.cassandra.db.PagedRangeCommand.executeLocally(PagedRangeCommand.java:111)
>       at 
> org.apache.cassandra.service.StorageProxy$LocalRangeSliceRunnable.runMayThrow(StorageProxy.java:1418)
>       at 
> org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:744)
> {code}
> Here is the schema I am using:
> {code}
>     CREATE KEYSPACE session WITH replication= {'class': 'SimpleStrategy', 
> 'replication_factor': 1};
>     CREATE TABLE session_data (
>     username text,
>     session_id text,
>     app_name text,
>     account text,
>     last_access timestamp,
>     created_on timestamp,
>     PRIMARY KEY (username, session_id, app_name, account)
>     );
>     create index sessionIndex ON session_data (session_id);
>     create index sessionAppName ON session_data (app_name);
>     create index lastAccessIndex ON session_data (last_access);
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to