stopCompactionFor should take CFS parameters instead of String
I don't really follow here, if you want it to have list of CFMetaData instead of String? String is better suited because CompactionInfo.getColumnFamily() returns a String (CF name).
I don't see any reason to not wait indefinitely here; in fact, if we make sure to wait until compaction finishes, the odds are much better that when we tell the client "all done" he won't be able to send a "create" quickly enough to hit the bug
We don't really try to wait indefinitely here, just for 30 seconds (worst case), if compactions don't finish until then we just move on with delete. do you want it to wait until all compactions to finish?
Need to call stopCompactionFor on every replica, not just CompactionServer – move this to DefsTable.dropColumnFamily?
I agree, I'm going to move that into dropColumnFamily call so it gets called on the replicas too.