src/java/org/apache/cassandra/db/DataTracker.java
/**
     * Removes files from compacting status: this is different from 'markCompacted'
     * because it should be run regardless of whether a compaction succeeded.
     */
Removes files from compacting status: this is different from 'markCompacted'
because it should be run regardless of whether a compaction succeeded.
Removes files from compacting status : this is different from ' markCompacted ' because it should be run regardless of whether a compaction succeeded .
public void unmarkCompacting(Collection<SSTableReader> unmark)
    {
        if (!cfstore.isValid())
        {
            for (SSTableReader sstable : unmark)
                sstable.markCompacted();
        }
        View currentView, newView;
        do
        {
            currentView = view.get();
            newView = currentView.unmarkCompacting(unmark);
        }
        while (!view.compareAndSet(currentView, newView));
    }
public void unmarkCompacting ( Collection < SSTableReader > unmark ) { if ( ! cfstore . isValid ( ) ) { for ( SSTableReader sstable : unmark ) sstable . markCompacted ( ) ; } View currentView , newView ; do { currentView = view . get ( ) ; newView = currentView . unmarkCompacting ( unmark ) ; } while ( ! view . compareAndSet ( currentView , newView ) ) ; }
Removes files from compacting status: this is different from 'markCompacted'
 because it should be run regardless of whether a compaction succeeded.
Removes files from compacting status : this is different from ' markCompacted ' because it should be run regardless of whether a compaction succeeded .
// We don't know if the original compaction suceeded or failed, which makes it difficult to know // if the sstable reference has already been released. // A "good enough" approach is to mark the sstables involved compacted, which if compaction succeeded // is harmlessly redundant, and if it failed ensures that at least the sstable will get deleted on restart.