Jon Haddad created CASSANDRA-21607:
--------------------------------------
Summary: Compaction throws NullPointerException when a dropped
non-frozen collection still holds cells newer than the drop
Key: CASSANDRA-21607
URL: https://issues.apache.org/jira/browse/CASSANDRA-21607
Project: Apache Cassandra
Issue Type: Bug
Components: Local/Compaction
Reporter: Jon Haddad
Found while adding test coverage to cursor compaction for collections in
CASSANDRA-21463.
{noformat}
CREATE KEYSPACE npe WITH replication =
{'class':'SimpleStrategy','replication_factor':1};
CREATE TABLE npe.t (pk bigint, ck bigint, v1 bigint, m map<text,bigint>,
PRIMARY KEY (pk, ck));
{noformat}
{noformat}
nodetool disableautocompaction npe t
{noformat}
{noformat}
UPDATE npe.t USING TIMESTAMP 4102444800000000 SET m = m + {'a':1} WHERE pk=0
AND ck=0;
{noformat}
{noformat}
nodetool flush npe t
{noformat}
{noformat}
UPDATE npe.t USING TIMESTAMP 4102444800000001 SET m = m + {'a':2} WHERE pk=0
AND ck=0;
{noformat}
{noformat}
nodetool flush npe t
{noformat}
{noformat}
ALTER TABLE npe.t DROP m;
{noformat}
{noformat}
nodetool compact npe t
{noformat}
{noformat}
error: null
-- StackTrace --
java.lang.NullPointerException
at
org.apache.cassandra.db.rows.Row$Merger$ColumnDataReducer.getReduced(Row.java:919)
at
org.apache.cassandra.db.rows.Row$Merger$ColumnDataReducer.getReduced(Row.java:854)
at
org.apache.cassandra.utils.RowMergeIterator$ManyToOne.consume(RowMergeIterator.java:254)
at
org.apache.cassandra.utils.RowMergeIterator$ManyToOne.computeNext(RowMergeIterator.java:193)
at
org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47)
at org.apache.cassandra.db.rows.Row$Merger.merge(Row.java:812)
at
org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator$MergeReducer.getReduced(UnfilteredRowIterators.java:590)
at
org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator$MergeReducer.getReduced(UnfilteredRowIterators.java:543)
at
org.apache.cassandra.utils.UnfilteredMergeIterator$ManyToOne.consume(UnfilteredMergeIterator.java:254)
at
org.apache.cassandra.utils.UnfilteredMergeIterator$ManyToOne.computeNext(UnfilteredMergeIterator.java:193)
at
org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47)
at
org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator.computeNext(UnfilteredRowIterators.java:525)
at
org.apache.cassandra.db.rows.UnfilteredRowIterators$UnfilteredRowMergeIterator.computeNext(UnfilteredRowIterators.java:398)
at
org.apache.cassandra.utils.AbstractIterator.hasNext(AbstractIterator.java:47)
at org.apache.cassandra.db.transform.BaseRows.hasNext(BaseRows.java:137)
at
org.apache.cassandra.db.transform.UnfilteredRows.isEmpty(UnfilteredRows.java:74)
at
org.apache.cassandra.db.partitions.PurgeFunction.applyToPartition(PurgeFunction.java:91)
at
org.apache.cassandra.db.partitions.PurgeFunction.applyToPartition(PurgeFunction.java:32)
at
org.apache.cassandra.db.transform.BasePartitions.hasNext(BasePartitions.java:94)
at
org.apache.cassandra.db.compaction.CompactionIterator.hasNext(CompactionIterator.java:431)
at
org.apache.cassandra.db.compaction.IteratorCompactionPipeline.processNextPartitionKey(IteratorCompactionPipeline.java:77)
at
org.apache.cassandra.db.compaction.CompactionTask.runMayThrow(CompactionTask.java:292)
at
org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:26)
at
org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:121)
at
org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:110)
at
org.apache.cassandra.db.compaction.CompactionManager$9.runMayThrow(CompactionManager.java:1195)
at
org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:26)
at
org.apache.cassandra.concurrent.FutureTask$3.call(FutureTask.java:141)
at org.apache.cassandra.concurrent.FutureTask.call(FutureTask.java:61)
at org.apache.cassandra.concurrent.FutureTask.run(FutureTask.java:71)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
at
org.apache.cassandra.concurrent.CassandraThread.run(CassandraThread.java:97)
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]