[ 
https://issues.apache.org/jira/browse/CASSANDRA-4031?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13228015#comment-13228015
 ] 

Yuki Morishita commented on CASSANDRA-4031:
-------------------------------------------

Same error happens when performing searching for empty value(='') on indexed 
column.

I agree with Sylvain, empty row key should not be allowed. But for version 1.1, 
I think it is fine to use empty row key on secondary indices, otherwise we have 
to perform full data scan and filter out all that have empty value on indexed 
column(or refuse query which has "=''").

I will fix this by adding empty key DK only for secondary index.
                
> Exceptions during inserting emtpy string as column value on indexed column
> --------------------------------------------------------------------------
>
>                 Key: CASSANDRA-4031
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4031
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Mariusz
>            Assignee: Yuki Morishita
>
> Hi,
> I`m running one node cluster(issue occurs also on other cluster(which has 2 
> nodes)) on snapshot from cassandra-1.1 branch(i used 
> 449e037195c3c504d7aca5088e8bc7bd5a50e7d0 commit).
> i have simple CF, definition of TestCF:
> {noformat}
> [default@test_keyspace] describe Test_CF;
>     ColumnFamily: Test_CF
>       Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
>       Default column value validator: org.apache.cassandra.db.marshal.UTF8Type
>       Columns sorted by: org.apache.cassandra.db.marshal.UTF8Type
>       GC grace seconds: 864000
>       Compaction min/max thresholds: 4/32
>       Read repair chance: 1.0
>       DC Local Read repair chance: 0.0
>       Replicate on write: true
>       Caching: KEYS_ONLY
>       Bloom Filter FP chance: default
>       Built indexes: [Test_CF.Test_CF_test_index_idx]
>       Column Metadata:
>         Column Name: test_index
>           Validation Class: org.apache.cassandra.db.marshal.UTF8Type
>           Index Name: Test_CF_test_index_idx
>           Index Type: KEYS
>       Compaction Strategy: 
> org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
>       Compression Options:
>         sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor
> {noformat}
> I`m trying to add new row(log from cassandra-cli, note that there is index on 
> test_index):
> {noformat}
> [default@test_keyspace] list Test_CF;              
> Using default limit of 100
> 0 Row Returned.
> Elapsed time: 31 msec(s).
> [default@test_keyspace] set Test_CF[absdsad3][test_index]='';
> null
> TimedOutException()
>       at 
> org.apache.cassandra.thrift.Cassandra$insert_result.read(Cassandra.java:15906)
>       at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
>       at 
> org.apache.cassandra.thrift.Cassandra$Client.recv_insert(Cassandra.java:788)
>       at 
> org.apache.cassandra.thrift.Cassandra$Client.insert(Cassandra.java:772)
>       at org.apache.cassandra.cli.CliClient.executeSet(CliClient.java:894)
>       at 
> org.apache.cassandra.cli.CliClient.executeCLIStatement(CliClient.java:211)
>       at 
> org.apache.cassandra.cli.CliMain.processStatementInteractive(CliMain.java:219)
>       at org.apache.cassandra.cli.CliMain.main(CliMain.java:346)
> [default@test_keyspace] list Test_CF;                        
> Using default limit of 100
> -------------------
> RowKey: absdsad3
> => (column=test_index, value=, timestamp=1331298173009000)
> 1 Row Returned.
> Elapsed time: 7 msec(s).
> {noformat}
> Exception from system.log:
> {noformat}
>  INFO [FlushWriter:56] 2012-03-09 13:42:02,500 Memtable.java (line 291) 
> Completed flushing 
> /var/lib/cassandra/data/system/schema_columnfamilies/system-schema_columnfamilies-hc-3251-Data.db
>  (2077 bytes)
> ERROR [MutationStage:2291] 2012-03-09 13:42:22,232 
> AbstractCassandraDaemon.java (line 134) Exception in thread 
> Thread[MutationStage:2291,5,main]
> java.lang.AssertionError
>         at org.apache.cassandra.db.DecoratedKey.<init>(DecoratedKey.java:55)
>         at 
> org.apache.cassandra.db.index.SecondaryIndexManager.getIndexKeyFor(SecondaryIndexManager.java:294)
>         at 
> org.apache.cassandra.db.index.SecondaryIndexManager.applyIndexUpdates(SecondaryIndexManager.java:490)
>         at org.apache.cassandra.db.Table.apply(Table.java:441)
>         at org.apache.cassandra.db.Table.apply(Table.java:366)
>         at org.apache.cassandra.db.RowMutation.apply(RowMutation.java:275)
>         at 
> org.apache.cassandra.service.StorageProxy$6.runMayThrow(StorageProxy.java:446)
>         at 
> org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1228)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to