CompactionManager.getBuckets is nondeterministic as explained in the parent issue.
This can be fixed either by sorting in getBuckets, or requiring that the iterable passed be sorted already. Either is fine.
We also need to add some unit tests to CompactionManagerTest for getBuckets. We need to decouple getBuckets a little to do this sanely; rather than examining sstable length directly or introducing some extra interface, let's declare getBuckets as
static Set<List<T>> getBuckets(Iterable<Pair<T, Integer>> files, long min)
where the integer in the pair is the file size. Then you can write tests against Strings instead of SSTableReaders.