You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/12/10 22:53:25 UTC
svn commit: r889435 -
/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
Author: jbellis
Date: Thu Dec 10 21:53:25 2009
New Revision: 889435
URL: http://svn.apache.org/viewvc?rev=889435&view=rev
Log:
explicitly request System.gc after compaction or cleanup to keep unreferenced sstable clutter to a minimum
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=889435&r1=889434&r2=889435&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Thu Dec 10 21:53:25 2009
@@ -753,6 +753,7 @@
{
doCleanup(sstable);
}
+ gcAfterRpcTimeout();
}
/**
@@ -937,6 +938,7 @@
SSTableReader ssTable = writer.closeAndOpenReader(DatabaseDescriptor.getKeysCachedFraction(table_));
ssTables_.add(ssTable);
ssTables_.markCompacted(sstables);
+ gcAfterRpcTimeout();
CompactionManager.instance().submit(ColumnFamilyStore.this);
String format = "Compacted to %s. %d/%d bytes for %d keys. Time: %dms.";
@@ -946,6 +948,29 @@
}
/**
+ * perform a GC to clean out obsolete sstables, sleeping rpc timeout first so that most in-progress ops can complete
+ * (thus, no longer reference the sstables in question)
+ */
+ private void gcAfterRpcTimeout()
+ {
+ new Thread(new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ Thread.sleep(DatabaseDescriptor.getRpcTimeout());
+ }
+ catch (InterruptedException e)
+ {
+ throw new AssertionError(e);
+ }
+ System.gc();
+ }
+ });
+ }
+
+ /**
* Performs a readonly compaction of all sstables in order to validate
* them on request, but without performing any writes.
*/