Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Availability - Response Crash
-
Normal
-
Normal
-
Unit Test
-
All
-
None
-
Description
In RangeTombstoneList#iterator there is a chance we emit empty range tombstones depending on the slice passed in. This can happen during read repair with either an empty slice or with paging and the final page being empty.
This creates problems in RTL if we try to insert a new range tombstone which covers the empty ones;
Caused by: java.lang.AssertionError at org.apache.cassandra.db.RangeTombstoneList.insertFrom(RangeTombstoneList.java:541) at org.apache.cassandra.db.RangeTombstoneList.addAll(RangeTombstoneList.java:217) at org.apache.cassandra.db.MutableDeletionInfo.add(MutableDeletionInfo.java:141) at org.apache.cassandra.db.partitions.AtomicBTreePartition.addAllWithSizeDelta(AtomicBTreePartition.java:137) at org.apache.cassandra.db.Memtable.put(Memtable.java:254) at org.apache.cassandra.db.ColumnFamilyStore.apply(ColumnFamilyStore.java:1210) at org.apache.cassandra.db.Keyspace.applyInternal(Keyspace.java:573) at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:421) at org.apache.cassandra.db.Mutation.apply(Mutation.java:210) at org.apache.cassandra.db.Mutation.apply(Mutation.java:215) at org.apache.cassandra.db.Mutation.apply(Mutation.java:224) at org.apache.cassandra.cql3.statements.ModificationStatement.executeInternalWithoutCondition(ModificationStatement.java:582) at org.apache.cassandra.cql3.statements.ModificationStatement.executeInternal(ModificationStatement.java:572)