cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcus Eriksson (JIRA)" <>
Subject [jira] [Created] (CASSANDRA-8034) AssertionError when STOP:ing compactions
Date Wed, 01 Oct 2014 14:33:33 GMT
Marcus Eriksson created CASSANDRA-8034:

             Summary: AssertionError when STOP:ing compactions
                 Key: CASSANDRA-8034
             Project: Cassandra
          Issue Type: Bug
            Reporter: Marcus Eriksson
             Fix For: 2.1.1

When we open compaction results early we clone the SSTableReader (ie create a new instance
of it). Any compaction strategy that keeps track of its sstables will not be notified of that
new sstable and keeps a reference to the old instance. The compaction strategy gets notified
when the compaction is actually done.

The problem is if the compaction is interrupted, then LCS will start a new compaction with
those stale SSTableReader instances and trigger an assertion error:

ERROR 14:27:06 Exception in thread Thread[CompactionExecutor:3,1,main]
java.lang.AssertionError: Reference counter -1 for /var/lib/cassandra/data/Keyspace1/Standard1-0bf25ed0496711e4bf3f07871b385ea9/Keyspace1-Standard1-ka-15-Data.db
	at org.apache.cassandra.db.DataTracker.replaceReaders( ~[Cassandra/:na]
	at ~[Cassandra/:na]
	at org.apache.cassandra.db.compaction.CompactionTask.runWith( ~[Cassandra/:na]
	at ~[Cassandra/:na]
	at org.apache.cassandra.db.compaction.CompactionTask.executeInternal(
	at org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(
	at org.apache.cassandra.db.compaction.CompactionManager$
	at java.util.concurrent.Executors$ ~[na:1.7.0_67]
	at ~[na:1.7.0_67]
	at java.util.concurrent.ThreadPoolExecutor.runWorker( ~[na:1.7.0_67]
	at java.util.concurrent.ThreadPoolExecutor$ [na:1.7.0_67]
	at [na:1.7.0_67]

Fix is probably to tell the compaction strategy that there is a new sstable instance whenever
we create one.

This message was sent by Atlassian JIRA

View raw message