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

Jonathan Ellis updated CASSANDRA-4687:
--------------------------------------

    Attachment: 4687-debugging.txt

Also: interesting that many of the failures involve an on-disk DK of (-1, "") 
which should have been rejected by ThriftValidation (row keys must not be 
empty).

(one failure example that does NOT involve an empty key is is 
http://www.mail-archive.com/[email protected]/msg24782.html.)

So either we're actually writing empty row keys, or we're seeking into the file 
at a strange offset and happening to read zero as the key length.

Patch attached to

# assert that we're not actually writing zero-length keys
# assert that any cache entry is actually valid at the time it is cached
# add debug logging for cache entry creation + retrieval

If someone can reproduce with a patched 1.1.5 or 1.1 branch, that should be 
instructive.
                
> Exception: DecoratedKey(xxx, yyy) != DecoratedKey(zzz, kkk)
> -----------------------------------------------------------
>
>                 Key: CASSANDRA-4687
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4687
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.5
>         Environment: CentOS 6.3 64-bit, Oracle JRE 1.6.0.33 64-bit, single 
> node cluster
>            Reporter: Leonid Shalupov
>            Assignee: Pavel Yaskevich
>            Priority: Critical
>             Fix For: 1.1.6
>
>         Attachments: 4687-debugging.txt
>
>
> Under heavy write load sometimes cassandra fails with assertion error.
> git bisect leads to commit 295aedb278e7a495213241b66bc46d763fd4ce66.
> works fine if global key/row caches disabled in code.
> {quote}
> java.lang.AssertionError: DecoratedKey(xxx, yyy) != DecoratedKey(zzz, kkk) in 
> /var/lib/cassandra/data/...-he-1-Data.db
>       at 
> org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SSTableSliceIterator.java:60)
>       at 
> org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:67)
>       at 
> org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:79)
>       at 
> org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:256)
>       at 
> org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:64)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1345)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1207)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1142)
>       at org.apache.cassandra.db.Table.getRow(Table.java:378)
>       at 
> org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:69)
>       at 
> org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:819)
>       at 
> org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1253)
>       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)
> {quote}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to