[
https://issues.apache.org/jira/browse/CASSANDRA-4687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13701709#comment-13701709
]
Andrew Bialecki commented on CASSANDRA-4687:
--------------------------------------------
Just hit this while doing some load testing. I can provide a bit more
information about what we were doing and how we created it:
Running Cassandra 1.2.5 on Ubuntu 12.04 with the default config file. 3 node
cluster with the following Keyspace/CF:
CREATE KEYSPACE TestKeyspace1 WITH placement_strategy='SimpleStrategy'
AND strategy_options = { replication_factor: 3};
USE TestKeyspace1;
CREATE COLUMN FAMILY TestCounters1 WITH
default_validation_class=CounterColumnType AND
key_validation_class=UTF8Type
AND comparator=UTF8Type AND replicate_on_write=true
AND compaction_strategy=LeveledCompactionStrategy AND
compaction_strategy_options={sstable_size_in_mb: 5};
Used our equivalent of the load utility to use 40 threads to increment counters
across 1M keys with up to 100 columns randomly. Peak load with this
configuration was about ~9.5k writes/sec, no reads. Although reads were being
done as a read is part of a counter write.
We had been playing with different setting to benchmark and to clear the
keyspace/CF, we were running:
DROP KEYSPACE TestKeyspace1;
and then re-creating it with the script above. After a few drops/creates I
noticed the SSTable size didn't appear to adhere to the sstable size
(potentially another bug?). No errors in logs, but after a few minutes of
writes, we saw no sstables written, so we forced a flush with "nodetool flush."
Upon doing so on one node, we ended up with a single sstable that was a 60M
file.
Right after the flush, we got a lot of errors in the log like:
java.lang.AssertionError: DecoratedKey(151132845099071093774085323081542634448,
636f6c756d6e34) != DecoratedKey(52766578155366297747310347893720908288,
726f77353035333134) in
/var/lib/cassandra/data/TestKeyspace1/TestCounters1/TestKeyspace1-TestCounters1-ic-1-Data.db
at
org.apache.cassandra.db.columniterator.SSTableNamesIterator.read(SSTableNamesIterator.java:119)
at
org.apache.cassandra.db.columniterator.SSTableNamesIterator.<init>(SSTableNamesIterator.java:60)
at
org.apache.cassandra.db.filter.NamesQueryFilter.getSSTableColumnIterator(NamesQueryFilter.java:81)
at
org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:68)
at
org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:274)
at
org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:65)
at
org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1357)
at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1214)
at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1126)
at org.apache.cassandra.db.Table.getRow(Table.java:347)
at
org.apache.cassandra.db.SliceByNamesReadCommand.getRow(SliceByNamesReadCommand.java:64)
at
org.apache.cassandra.db.CounterMutation.makeReplicationMutation(CounterMutation.java:90)
at
org.apache.cassandra.service.StorageProxy$7$1.runMayThrow(StorageProxy.java:796)
at
org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1578)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
By the way, we changed how we dropped/recreated the keyspace from dropping the
keyspace and running:
nodetool clearsnapshot
nodetool cleanup
to dropping the keyspace and then running:
rm -rf /var/lib/cassandra/data/TestKeyspace1
nodetool invalidatekeycache
and now we're seeing the sstable size respected. Not sure if that's a bug, but
I can take the relevant bits from above and open a ticket if that's useful. Or
if it's better, when we have some free time we can try to simplify the steps to
reproduce.
> 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
> Environment: CentOS 6.3 64-bit, Oracle JRE 1.6.0.33 64-bit, single
> node cluster
> Reporter: Leonid Shalupov
> Priority: Minor
> 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