Buggy code:
public final class ColumnFamilyStore implements ColumnFamilyStoreMBean { private static Logger logger_ = Logger . getLogger ( ColumnFamilyStore . class ) ; private static NonBlockingHashMap < String , Set < Memtable > > memtablesPendingFlush = new NonBlockingHashMap < String , Set < Memtable > > ( ) ; private static ExecutorService flushSorter_ = new JMXEnabledThreadPoolExecutor ( 1 , Runtime . getRuntime ( ) . availableProcessors ( ) , Integer . MAX_VALUE , TimeUnit . SECONDS , new LinkedBlockingQueue < Runnable > ( ( 2 * ( Runtime . getRuntime ( ) . availableProcessors ( ) ) ) ) , new NamedThreadFactory ( "FLUSH-SORTER-POOL" ) ) ; private static ExecutorService flushWriter_ = new JMXEnabledThreadPoolExecutor ( DatabaseDescriptor . getAllDataFileLocations ( ) . length , DatabaseDescriptor . getAllDataFileLocations ( ) . length , Integer . MAX_VALUE , TimeUnit . SECONDS , new LinkedBlockingQueue < Runnable > ( ) , new NamedThreadFactory ( "FLUSH-WRITER-POOL" ) ) ; private static ExecutorService commitLogUpdater_ = new JMXEnabledThreadPoolExecutor ( "MEMTABLE-POST-FLUSHER" ) ; private static final int KEY_RANGE_FILE_BUFFER_SIZE = 256 * 1024 ; private final String table_ ; public final String columnFamily_ ; private final boolean isSuper_ ; private volatile Integer memtableSwitchCount = 0 ; private AtomicInteger fileIndexGenerator_ = new AtomicInteger ( 0 ) ; private Memtable memtable_ ; private AtomicReference < BinaryMemtable > binaryMemtable_ ; private SSTableTracker ssTables_ = new SSTableTracker ( ) ; private TimedStatsDeque readStats_ = new TimedStatsDeque ( 60000 ) ; private TimedStatsDeque writeStats_ = new TimedStatsDeque ( 60000 ) ; private final IPartitioner partitioner = StorageService . getPartitioner ( ) ; ColumnFamilyStore ( String table , String columnFamilyName , boolean isSuper , int indexValue ) throws IOException { } public static ColumnFamilyStore getColumnFamilyStore ( String table , String columnFamily ) throws IOException { } private Set < File > files ( ) { } void onStart ( ) throws IOException { } public String cfStats ( String newLineSeparator ) { } public String getColumnFamilyName ( ) { } private static String getColumnFamilyFromFileName ( String filename ) { } public static int getGenerationFromFileName ( String filename ) { } synchronized String getTempSSTablePath ( ) { } public String getTempSSTableFileName ( ) { } Future < ? > switchMemtable ( Memtable oldMemtable , final boolean writeCommitLog ) throws IOException { } void switchBinaryMemtable ( String key , byte [ ] buffer ) throws IOException { } public void forceFlushIfExpired ( ) throws IOException { } public Future < ? > forceFlush ( ) throws IOException { } void forceBlockingFlush ( ) throws IOException , InterruptedException , ExecutionException { } public void forceFlushBinary ( ) { } Memtable apply ( String key , ColumnFamily columnFamily ) throws IOException { } void applyBinary ( String key , byte [ ] buffer ) throws IOException { } static ColumnFamily removeDeleted ( ColumnFamily cf ) { } public static ColumnFamily removeDeleted ( ColumnFamily cf , int gcBefore ) { } private static void removeDeletedStandard ( ColumnFamily cf , int gcBefore ) { } private static void removeDeletedSuper ( ColumnFamily cf , int gcBefore ) { } void onMemtableFlush ( CommitLog . CommitLogContext cLogCtx ) throws IOException { } public void addSSTable ( SSTableReader sstable ) { ssTables_ . add ( sstable ) ; <START_BUG> instance . submitMinor ( this ) ; <END_BUG> } long getExpectedCompactedFileSize ( Iterable < SSTableReader > sstables ) { } SSTableReader getMaxSizeFile ( Iterable < SSTableReader > sstables ) { } void forceCleanup ( ) { } public Table getTable ( ) { } void markCompacted ( Collection < SSTableReader > sstables ) throws IOException { } boolean isCompleteSSTables ( Collection < SSTableReader > sstables ) { } void replaceCompactedSSTables ( Collection < SSTableReader > sstables , Iterable < SSTableReader > replacements ) throws IOException { } public static List < Memtable > getUnflushedMemtables ( String cfName ) { } static Set < Memtable > getMemtablesPendingFlushNotNull ( String columnFamilyName ) { } Condition submitFlush ( final IFlushable flushable ) { } public boolean isSuper ( ) { } public int getMemtableColumnsCount ( ) { } public int getMemtableDataSize ( ) { } public int getMemtableSwitchCount ( ) { } private Memtable getMemtableThreadSafe ( ) { } public Iterator < DecoratedKey > memtableKeyIterator ( ) throws InterruptedException , ExecutionException { } public Collection < SSTableReader > getSSTables ( ) { } public int getReadCount ( ) { } public double getReadLatency ( ) { } public int getPendingTasks ( ) { } public int getWriteCount ( ) { } public double getWriteLatency ( ) { } public ColumnFamily getColumnFamily ( String key , QueryPath path , byte [ ] start , byte [ ] finish , boolean reversed , int limit ) throws IOException { } public ColumnFamily getColumnFamily ( QueryFilter filter ) throws IOException { } public ColumnFamily getColumnFamily ( QueryFilter filter , int gcBefore ) throws IOException { } private ColumnFamily getColumnFamilyInternal ( QueryFilter filter , int gcBefore ) throws IOException { } public RangeReply getKeyRange ( final String startWith , final String stopAt , int maxResults ) throws IOException , InterruptedException , ExecutionException { } public RangeReply getKeyRangeRaw ( final DecoratedKey startWith , final DecoratedKey stopAt , int maxResults ) throws IOException , InterruptedException , ExecutionException { } public RangeSliceReply getRangeSlice ( byte [ ] super_column , final DecoratedKey startKey , final DecoratedKey finishKey , int keyMax , SliceRange sliceRange , List < byte [ ] > columnNames ) throws IOException , InterruptedException , ExecutionException { } public AbstractType getComparator ( ) { } public void snapshot ( String snapshotName ) throws IOException { } public long getTotalDiskSpaceUsed ( ) { } public long getLiveDiskSpaceUsed ( ) { } public int getLiveSSTableCount ( ) { } void clearUnsafe ( ) { } }

Fix:
instance . submitMinorIfNeeded ( this ) ;