Buggy code:
public class Memtable implements Comparable < Memtable > { private static Logger logger_ = Logger . getLogger ( Memtable . class ) ; private static Set < ExecutorService > runningExecutorServices_ = new org . cliffc . high_scale_lib . NonBlockingHashSet < ExecutorService > ( ) ; private static AtomicInteger executorCount_ = new AtomicInteger ( 0 ) ; public static void shutdown ( ) { } private Memtable . MemtableThreadPoolExecutor executor_ ; private volatile boolean isFrozen_ ; private volatile boolean isDirty_ ; private volatile boolean isFlushed_ ; private int threshold_ = ( ( DatabaseDescriptor . getMemtableSize ( ) ) * 1024 ) * 1024 ; private int thresholdCount_ = ( ( int ) ( ( ( DatabaseDescriptor . getMemtableObjectCount ( ) ) * 1024 ) * 1024 ) ) ; private AtomicInteger currentSize_ = new AtomicInteger ( 0 ) ; private AtomicInteger currentObjectCount_ = new AtomicInteger ( 0 ) ; private String table_ ; private String cfName_ ; private long creationTime_ ; private Map < String , ColumnFamily > columnFamilies_ = new HashMap < String , ColumnFamily > ( ) ; Memtable ( String table , String cfName ) { } public boolean isFlushed ( ) { } class Putter implements Runnable { private String key_ ; private ColumnFamily columnFamily_ ; Putter ( String key , ColumnFamily cf ) { } public void run ( ) { } } class Getter implements Callable < ColumnFamily > { private String key_ ; private String columnFamilyName_ ; private IFilter filter_ ; Getter ( String key , String cfName ) { } Getter ( String key , String cfName , IFilter filter ) { } public ColumnFamily call ( ) { } } public int compareTo ( Memtable rhs ) { } public int getCurrentSize ( ) { } public int getCurrentObjectCount ( ) { } void resolveSize ( int oldSize , int newSize ) { } void resolveCount ( int oldCount , int newCount ) { } boolean isThresholdViolated ( ) { } String getColumnFamily ( ) { } private synchronized void enqueueFlush ( CommitLog . CommitLogContext cLogCtx ) { } void put ( String key , ColumnFamily columnFamily , CommitLog . CommitLogContext cLogCtx ) throws IOException { } public void forceflush ( ) { } void flushOnRecovery ( ) throws IOException { } private void resolve ( String key , ColumnFamily columnFamily ) { } void putOnRecovery ( String key , ColumnFamily columnFamily ) { } ColumnFamily getLocalCopy ( String key , String columnFamilyColumn , IFilter filter ) { } ColumnFamily get ( String key , String cfName , IFilter filter ) { } void flush ( CommitLog . CommitLogContext cLogCtx ) throws IOException { } private class MemtableThreadPoolExecutor extends DebuggableThreadPoolExecutor { FutureTask flushQueuer ; public MemtableThreadPoolExecutor ( ) { } protected void terminated ( ) { } public void flushWhenTerminated ( final CommitLog . CommitLogContext cLogCtx ) { Runnable runnable = new Runnable ( ) { public void run ( ) { <START_BUG> MemtableManager . instance ( ) . submit ( cfName_ , Memtable . this , cLogCtx ) ; <END_BUG> } } ; flushQueuer = new FutureTask ( runnable , null ) ; } } public Iterator < String > sortedKeyIterator ( ) throws InterruptedException , ExecutionException { } public boolean isClean ( ) { } }

Fix:
ColumnFamilyStore . submitFlush ( Memtable . this , cLogCtx ) ;