[ https://issues.apache.org/jira/browse/CASSANDRA-1130?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12871375#action_12871375 ]
Sylvain Lebresne commented on CASSANDRA-1130: --------------------------------------------- But they shouldn't be extra bytes to skip. An expired column becomes a deletedColumn only after everything is deserialized. It is expected that we read all and everything that is written. The while loop you're referring to is here to read all the column (or super columns) that falls into one given index range (the index is sparse). If you exit the while loop, you will just potentially skip some columns (super columns in your example). That it makes cassandra start may just be that it skips the problematic parts. I'll try to reproduce this tomorrow (but if you want and can share your test code to make that easier, feel free to :)). > Cassandra throws Exceptions at startup when using TTL in SuperColumns > --------------------------------------------------------------------- > > Key: CASSANDRA-1130 > URL: https://issues.apache.org/jira/browse/CASSANDRA-1130 > Project: Cassandra > Issue Type: Bug > Components: Core > Affects Versions: 0.7 > Reporter: Jignesh Dhruv > Assignee: Sylvain Lebresne > Fix For: 0.7 > > > Hello, > I am trying to use TTL (timeToLive) feature in SuperColumns. > My usecase is: > - I have a SuperColumn and 3 subcolumns. > - I try to expire data after 60 seconds. > While Cassandra is up and running, I am successfully able to push and read > data without any problems. Data compaction and all occurs fine. After > inserting say about 100000 records, I stop Cassandra while data is still > coming. > On startup Cassandra throws an exception and won't start up. (This happens 1 > in every 3 times). Exception varies like: > - EOFException while reading data > - negative value encountered exception > - Heap Space Exception > Cassandra simply won't start up. > Again I get this problem only when I use TTL with SuperColumns. There are no > issues with using TTL with regular Columns. > I tried to diagnose the problem and it seems to happen on startup when it > sees a Column that is marked Deleted and its trying to read data. Its off by > some bytes and hence all these exceptions. > Caused by: java.io.IOException: Corrupt (negative) value length encountered > at > org.apache.cassandra.utils.FBUtilities.readByteArray(FBUtilities.java:317) > at > org.apache.cassandra.db.ColumnSerializer.deserialize(ColumnSerializer.java:84) > at > org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:336) > at > org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:285) > at > org.apache.cassandra.db.filter.SSTableSliceIterator$ColumnGroupReader.getNextBlock(SSTableSliceIterator.java:235) > at > org.apache.cassandra.db.filter.SSTableSliceIterator$ColumnGroupReader.pollColumn(SSTableSliceIterator.java:195) > ... 18 more > Let me know if you need more information. > Thanks, > Jignesh -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.