[
https://issues.apache.org/jira/browse/CASSANDRA-1130?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12871836#action_12871836
]
Jignesh Dhruv commented on CASSANDRA-1130:
------------------------------------------
I checked out the latest source code this morning and I am still able to
reproduce it.
My usecase is:
- Start Cassandra
- Keep adding SuperColumns with 3 subcolumns within each SuperColumn. Each
subcolumn expires in 35 seconds.
- Let cassandra run until you see statements like "Deleted files"
- Stop cassandra and try to start and it will give you all the exceptions that
I am talking about.
Also I believe ExpiringColumn contains some more data compared to
DeletedColumn. Correct? In my testing I found that length of each DeletedColumn
was similar to ExpiringColumn and once a complete DeletedColumn record was read
there were some more extra bytes at the end of the record which is causing all
this issue?
When you convert a ExpiringColumn to DeletedColumn, is it in place replacement
or the old record is marked for deletion by just changing the EXPIRING_MASK to
DELETED_MASK.
I will try to produce a junit test case. But one needs to still stop cassandra
when one sees some files being deleted. At that point you will see the error
that I am talking about.
Jignesh
> 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.