Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Not A Problem
-
None
-
None
-
Normal
Description
Assertion (below) was triggered when client was adding new rows to Solr-backed secondary indices (1000-row batch without any timeout).
ERROR [COMMIT-LOG-WRITER] 2012-05-30 16:39:02,896 AbstractCassandraDaemon.java (line 139) Fatal exception in thread Thread[COMMIT-LOG-WRITER,5,main] java.lang.AssertionError: Final buffer length 176 to accomodate data size of 123 (predicted 87) for RowMutation(keyspace='solrTest1338395932411', key='6b6579383039', modifications=[ColumnFamily(cf1 [long:false:8@1338395942384024,stringId:false:13@1338395940586003,])]) at org.apache.cassandra.utils.FBUtilities.serialize(FBUtilities.java:682) at org.apache.cassandra.db.RowMutation.getSerializedBuffer(RowMutation.java:279) at org.apache.cassandra.db.commitlog.CommitLogSegment.write(CommitLogSegment.java:122) at org.apache.cassandra.db.commitlog.CommitLog$LogRecordAdder.run(CommitLog.java:600) at org.apache.cassandra.db.commitlog.PeriodicCommitLogExecutorService$1.runMayThrow(PeriodicCommitLogExecutorService.java:49) at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30) at java.lang.Thread.run(Thread.java:662)
After investigation it was clear that it was happening because we were holding instances of RowMutation queued to the addition to CommitLog to the actual "write" moment which is redundant.