SSTable cleanup killed by IllegalStateException
-----------------------------------------------

                 Key: CASSANDRA-1458
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1458
             Project: Cassandra
          Issue Type: Bug
          Components: Core
    Affects Versions: 0.7 beta 1
         Environment: trunk from 2010-08-31
            Reporter: Christopher Gist
            Priority: Minor


Compacted SSTables were not being deleted even after a forced GC. The following 
stack traces were observed:

ERROR [SSTABLE-CLEANUP-TIMER] 2010-09-01 15:54:07,254 CassandraDaemon.java 
(line 85) Uncaught exception in thread Thread[SSTABLE-CLEANUP-TIMER,5,main]
java.lang.IllegalStateException: Task already scheduled or cancelled
        at java.util.Timer.sched(Timer.java:380)
        at java.util.Timer.schedule(Timer.java:192)
        at 
org.apache.cassandra.io.sstable.SSTableDeletingReference$CleanupTask.run(SSTableDeletingReference.java:86)
        at java.util.TimerThread.mainLoop(Timer.java:534)
        at java.util.TimerThread.run(Timer.java:484)

ERROR [SSTABLE-DELETER] 2010-09-01 16:20:22,587 CassandraDaemon.java (line 85) 
Uncaught exception in thread Thread[SSTABLE-DELETER,5,main]
java.lang.IllegalStateException: Timer already cancelled.
        at java.util.Timer.sched(Timer.java:376)
        at java.util.Timer.schedule(Timer.java:192)
        at 
org.apache.cassandra.io.sstable.SSTableDeletingReference.cleanup(SSTableDeletingReference.java:70)
        at 
org.apache.cassandra.io.sstable.SSTableReader$1$1.run(SSTableReader.java:85)
        at java.lang.Thread.run(Thread.java:636)

If the SSTableDeletingReference$CleanupTask cannot delete a file, it 
reschedules itself for later. TimerTasks (which CleanupTask subclasses) are 
intended to be scheduled only once and will cause an IllegalStateException in 
the timer when it tries to schedule itself again. The exception causes timer to 
effectively cancel itself and the next attempt to schedule a task will cause an 
IllegalStateException in the SSTABLE-DELETER.

It appears this could be fixed by scheduling a new CleanupTask instead of the 
same one that failed (SSTableDeletingReference.java:86).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to