code: public void unmarkCompacting(Iterable<SSTableReader> unmark)
      {
          boolean isValid = cfstore.isValid();
          if (!isValid)
          {
              // The CF has been dropped.  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 obsolete, which if compaction succeeded
              // is harmlessly redundant, and if it failed ensures that at least the sstable will get deleted on restart.
              for (SSTableReader sstable : unmark)
                  sstable.markObsolete();
          }
  
          View currentView, newView;
          do
          {
              currentView = view.get();
              newView = currentView.unmarkCompacting(unmark);
          }
          while (!view.compareAndSet(currentView, newView));
  
          if (!isValid)
          {
              // when the CFS is invalidated, it will call unreferenceSSTables().  However, unreferenceSSTables only deals
              // with sstables that aren't currently being compacted.  If there are ongoing compactions that finish or are
              // interrupted after the CFS is invalidated, those sstables need to be unreferenced as well, so we do that here.
              unreferenceSSTables();
          }
      }
docs: Removes files from compacting status: this is different from 'markObsolete'
  because it should be run regardless of whether a compaction succeeded.