Buggy code:
public long getMinRowCompactedSize ( ) { } public long getMaxRowCompactedSize ( ) { } public long getMeanRowCompactedSize ( ) { } public static ColumnFamilyStore createColumnFamilyStore ( String table , String columnFamily ) { } private Set < File > files ( ) { } public String getColumnFamilyName ( ) { } private static String getColumnFamilyFromFileName ( String filename ) { } public static int getGenerationFromFileName ( String filename ) { } public String getFlushPath ( ) { } public String getTempSSTablePath ( String directory ) { } Future < ? > maybeSwitchMemtable ( Memtable oldMemtable , final boolean writeCommitLog ) { } void switchBinaryMemtable ( String key , byte [ ] buffer ) { } public void forceFlushIfExpired ( ) { } public Future < ? > forceFlush ( ) { } public void forceBlockingFlush ( ) throws InterruptedException , ExecutionException { } public void forceFlushBinary ( ) { } Memtable apply ( String key , ColumnFamily columnFamily ) { } void applyBinary ( String key , byte [ ] buffer ) { } public static ColumnFamily removeDeleted ( ColumnFamily cf , int gcBefore ) { } private static void removeDeletedStandard ( ColumnFamily cf , int gcBefore ) { } private static void removeDeletedSuper ( ColumnFamily cf , int gcBefore ) { } public void addSSTable ( SSTableReader sstable ) { } long getExpectedCompactedFileSize ( Iterable < SSTableReader > sstables ) { } SSTableReader getMaxSizeFile ( Iterable < SSTableReader > sstables ) { } void forceCleanup ( ) { } public Table getTable ( ) { } void markCompacted ( Collection < SSTableReader > sstables ) { } boolean isCompleteSSTables ( Collection < SSTableReader > sstables ) { } void replaceCompactedSSTables ( Collection < SSTableReader > sstables , Iterable < SSTableReader > replacements ) { } Condition submitFlush ( IFlushable flushable ) { } public boolean isSuper ( ) { } public int getMemtableColumnsCount ( ) { } public int getMemtableDataSize ( ) { } public int getMemtableSwitchCount ( ) { } private Memtable getMemtableThreadSafe ( ) { } public Collection < SSTableReader > getSSTables ( ) { } public long getReadCount ( ) { } public double getRecentReadLatencyMicros ( ) { } public long getTotalReadLatencyMicros ( ) { } public int getPendingTasks ( ) { } public long getWriteCount ( ) { } public long getTotalWriteLatencyMicros ( ) { } public double getRecentWriteLatencyMicros ( ) { } public ColumnFamily getColumnFamily ( String key , QueryPath path , byte [ ] start , byte [ ] finish , List < byte [ ] > bitmasks , boolean reversed , int limit ) { } public ColumnFamily getColumnFamily ( String key , QueryPath path , byte [ ] start , byte [ ] finish , boolean reversed , int limit ) { } public ColumnFamily getColumnFamily ( QueryFilter filter ) { } private ColumnFamily cacheRow ( String key ) { } public ColumnFamily getColumnFamily ( QueryFilter filter , int gcBefore ) { } private ColumnFamily getTopLevelColumns ( QueryFilter filter , int gcBefore ) { List < IColumnIterator > iterators = new ArrayList < IColumnIterator > ( ) ; final ColumnFamily returnCF = ColumnFamily . create ( table_ , columnFamily_ ) ; try { IColumnIterator iter ; flusherLock . readLock ( ) . lock ( ) ; try { iter = filter . getMemtableColumnIterator ( memtable_ , getComparator ( ) ) ; } finally { flusherLock . readLock ( ) . unlock ( ) ; } if ( iter != null ) { returnCF . delete ( iter . getColumnFamily ( ) ) ; iterators . add ( iter ) ; } for ( Memtable memtable : getMemtablesPendingFlush ( ) ) { iter = filter . getMemtableColumnIterator ( memtable , getComparator ( ) ) ; if ( iter != null ) { returnCF . delete ( iter . getColumnFamily ( ) ) ; iterators . add ( iter ) ; } } for ( SSTableReader sstable : ssTables_ ) { iter = filter . getSSTableColumnIterator ( sstable ) ; if ( iter . hasNext ( ) ) { returnCF . delete ( iter . getColumnFamily ( ) ) ; } iterators . add ( iter ) ; } <START_BUG> Comparator < IColumn > comparator = filter . getColumnComparator ( getComparator ( ) ) ; <END_BUG> Iterator collated = IteratorUtils . collatedIterator ( comparator , iterators ) ; if ( ! ( collated . hasNext ( ) ) ) return null ; filter . collectCollatedColumns ( returnCF , collated , gcBefore ) ; return returnCF ; } catch ( IOException e ) { throw new IOError ( e ) ; } finally { for ( IColumnIterator ci : iterators ) { try { ci . close ( ) ; } catch ( Throwable th ) { ColumnFamilyStore . logger_ . error ( ( "error<seq2seq4repair_space>closing<seq2seq4repair_space>" + ci ) , th ) ; } } } } private boolean getRangeRows ( List < Row > rows , byte [ ] superColumn , final AbstractBounds range , int maxResults , SliceRange sliceRange , List < byte [ ] > columnNames ) throws InterruptedException , ExecutionException { } public RangeSliceReply getRangeSlice ( byte [ ] super_column , final AbstractBounds range , int keyMax , SliceRange sliceRange , List < byte [ ] > columnNames ) throws InterruptedException , ExecutionException { } public AbstractType getComparator ( ) { } public void snapshot ( String snapshotName ) { } public boolean hasUnreclaimedSpace ( ) { } public long getTotalDiskSpaceUsed ( ) { } public long getLiveDiskSpaceUsed ( ) { } public int getLiveSSTableCount ( ) { } public ColumnFamily getRawCachedRow ( String key ) { } void invalidateCachedRow ( String key ) { } public void forceMajorCompaction ( ) { } public void invalidateRowCache ( ) { } public static Iterable < ColumnFamilyStore > all ( ) { } public Iterable < DecoratedKey > allKeySamples ( ) { } void clearUnsafe ( ) { } public Set < Memtable > getMemtablesPendingFlush ( ) { } }

Fix:
Comparator < IColumn > comparator = QueryFilter . getColumnComparator ( getComparator ( ) ) ;