Hi, using C* 1.2.5 I just found a weird AssertionError in our logfiles:
... INFO [OptionalTasks:1] 2013-07-01 09:15:43,608 MeteredFlusher.java (line 58) flushing high-traffic column family CFS(Keyspace='Monitoring', ColumnFamily='cfDateOrderedMessages') (estimated 5242880 bytes) INFO [OptionalTasks:1] 2013-07-01 09:15:43,609 ColumnFamilyStore.java (line 630) Enqueuing flush of Memtable-cfDateOrderedMessages@2147245119(4616888/5242880 serialized/live bytes, 23714 ops) INFO [FlushWriter:9] 2013-07-01 09:15:43,610 Memtable.java (line 461) Writing Memtable-cfDateOrderedMessages@2147245119(4616888/5242880 serialized/live bytes, 23714 ops) ERROR [FlushWriter:9] 2013-07-01 09:15:44,145 CassandraDaemon.java (line 192) Exception in thread Thread[FlushWriter:9,5,main] java.lang.AssertionError at org.apache.cassandra.db.ColumnSerializer.serialize(ColumnSerializer.java:40) at org.apache.cassandra.db.ColumnSerializer.serialize(ColumnSerializer.java:30) at org.apache.cassandra.db.OnDiskAtom$Serializer.serializeForSSTable(OnDiskAtom.java:62) at org.apache.cassandra.db.ColumnIndex$Builder.add(ColumnIndex.java:181) at org.apache.cassandra.db.ColumnIndex$Builder.build(ColumnIndex.java:133) at org.apache.cassandra.io.sstable.SSTableWriter.append(SSTableWriter.java:185) at org.apache.cassandra.db.Memtable$FlushRunnable.writeSortedContents(Memtable.java:489) at org.apache.cassandra.db.Memtable$FlushRunnable.runWith(Memtable.java:448) at org.apache.cassandra.io.util.DiskAwareRunnable.runMayThrow(DiskAwareRunnable.java:48) at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) 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) I looked into the code and it seems to be coming from the following code: public void serialize(IColumn column, DataOutput dos) throws IOException { assert column.name().remaining() > 0; // crash ByteBufferUtil.writeWithShortLength(column.name(), dos); try {... Does anybody have an idea why this is happening? The machine has some issues with its disks, but flush shouldn't be affected by bad disks, right? I can rule out that this memtable was filled by a bad commitlog. Thanks, Christian