Updated Branches: refs/heads/trunk 625e61396 -> 84aba3a6a
re-add cleanup-in-sorted-order code, and remove unused Table.forceCleanup Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/84aba3a6 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/84aba3a6 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/84aba3a6 Branch: refs/heads/trunk Commit: 84aba3a6ac924788247c60f94811007f4dc86023 Parents: 39aae3d Author: Jonathan Ellis <jbel...@apache.org> Authored: Wed Jun 6 09:41:31 2012 -0500 Committer: Jonathan Ellis <jbel...@apache.org> Committed: Wed Jun 6 09:41:31 2012 -0500 ---------------------------------------------------------------------- src/java/org/apache/cassandra/db/Table.java | 30 --------------- .../cassandra/db/compaction/CompactionManager.java | 17 ++++++++- 2 files changed, 16 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/84aba3a6/src/java/org/apache/cassandra/db/Table.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/Table.java b/src/java/org/apache/cassandra/db/Table.java index 1308a08..9a056c8 100644 --- a/src/java/org/apache/cassandra/db/Table.java +++ b/src/java/org/apache/cassandra/db/Table.java @@ -155,36 +155,6 @@ public class Table } /** - * Do a cleanup of keys that do not belong locally. - */ - public void forceCleanup(NodeId.OneShotRenewer renewer) throws IOException, ExecutionException, InterruptedException - { - if (name.equals(SYSTEM_TABLE)) - throw new UnsupportedOperationException("Cleanup of the system table is neither necessary nor wise"); - - // Sort the column families in order of SSTable size, so cleanup of smaller CFs - // can free up space for larger ones - List<ColumnFamilyStore> sortedColumnFamilies = new ArrayList<ColumnFamilyStore>(columnFamilyStores.values()); - Collections.sort(sortedColumnFamilies, new Comparator<ColumnFamilyStore>() - { - // Compare first on size and, if equal, sort by name (arbitrary & deterministic). - public int compare(ColumnFamilyStore cf1, ColumnFamilyStore cf2) - { - long diff = (cf1.getTotalDiskSpaceUsed() - cf2.getTotalDiskSpaceUsed()); - if (diff > 0) - return 1; - if (diff < 0) - return -1; - return cf1.columnFamily.compareTo(cf2.columnFamily); - } - }); - - // Cleanup in sorted order to free up space for the larger ones - for (ColumnFamilyStore cfs : sortedColumnFamilies) - cfs.forceCleanup(renewer); - } - - /** * Take a snapshot of the specific column family, or the entire set of column families * if columnFamily is null with a given timestamp * http://git-wip-us.apache.org/repos/asf/cassandra/blob/84aba3a6/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java index 5f530a2..50e955d 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@ -248,7 +248,22 @@ public class CompactionManager implements CompactionManagerMBean { public void perform(ColumnFamilyStore store, Collection<SSTableReader> sstables) throws IOException { - doCleanupCompaction(store, sstables, renewer); + // Sort the column families in order of SSTable size, so cleanup of smaller CFs + // can free up space for larger ones + List<SSTableReader> sortedSSTables = new ArrayList<SSTableReader>(sstables); + Collections.sort(sortedSSTables, new Comparator<SSTableReader>() + { + public int compare(SSTableReader o1, SSTableReader o2) + { + return o1.onDiskLength() < o2.onDiskLength() + ? -1 + : o1.onDiskLength() > o2.onDiskLength() + ? 1 + : 0; + } + }); + + doCleanupCompaction(store, sortedSSTables, renewer); } }); }