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/04/17 22:08:10 UTC
svn commit: r766134 - in /incubator/cassandra/trunk: conf/storage-conf.xml
src/org/apache/cassandra/config/DatabaseDescriptor.java
src/org/apache/cassandra/db/ColumnFamilyStore.java
Author: jbellis
Date: Fri Apr 17 20:08:10 2009
New Revision: 766134
URL: http://svn.apache.org/viewvc?rev=766134&view=rev
Log:
make GC_GRACE_IN_SECONDS customizable in storage.conf.
patch by jbellis; reviewed by Eric Evans for #33
Modified:
incubator/cassandra/trunk/conf/storage-conf.xml
incubator/cassandra/trunk/src/org/apache/cassandra/config/DatabaseDescriptor.java
incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java
Modified: incubator/cassandra/trunk/conf/storage-conf.xml
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/conf/storage-conf.xml?rev=766134&r1=766133&r2=766134&view=diff
==============================================================================
--- incubator/cassandra/trunk/conf/storage-conf.xml (original)
+++ incubator/cassandra/trunk/conf/storage-conf.xml Fri Apr 17 20:08:10 2009
@@ -45,6 +45,12 @@
<BootstrapFileDirectory>/var/cassandra/bootstrap</BootstrapFileDirectory>
<StagingFileDirectory>/var/cassandra/staging</StagingFileDirectory>
<CommitLogFastSync>false</CommitLogFastSync>
+ <!-- Time to wait before garbage-collection deletion markers.
+ Set this to a large enough value that you are confident
+ that the deletion marker will be propagated to all replicas
+ by the time this many seconds has elapsed, even in the
+ face of hardware failures. The default value is ten days. -->
+ <GCGraceSeconds>864000</GCGraceSeconds>
<Tables>
<Table Name = "Table1">
<ColumnFamily ColumnSort="Name" Name="Standard1"/>
Modified: incubator/cassandra/trunk/src/org/apache/cassandra/config/DatabaseDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/config/DatabaseDescriptor.java?rev=766134&r1=766133&r2=766134&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/config/DatabaseDescriptor.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/config/DatabaseDescriptor.java Fri Apr 17 20:08:10 2009
@@ -27,14 +27,11 @@
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.Table;
import org.apache.cassandra.db.TypeInfo;
-import org.apache.cassandra.db.DBManager;
import org.apache.cassandra.db.SystemTable;
-import org.apache.cassandra.db.Table.TableMetadata;
import org.apache.cassandra.utils.FileUtils;
import org.apache.cassandra.utils.XMLUtils;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.apache.cassandra.io.*;
/**
@@ -116,10 +113,12 @@
private static String jobTrackerHost_;
/* Zookeeper session timeout. */
private static int zkSessionTimeout_ = 30000;
-
+ /* time to wait before garbage collecting tombstones (deletion markers) */
+ private static int gcGraceInSeconds_ = 10 * 24 * 3600; // 10 days
+
// the path qualified config file (storage-conf.xml) name
private static String configFileName_;
-
+
static
{
try
@@ -148,6 +147,10 @@
/* Job Jar file location */
jobJarFileLocation_ = xmlUtils.getNodeValue("/Storage/JobJarFileLocation");
+ String gcGrace = xmlUtils.getNodeValue("/Storage/GCGraceSeconds");
+ if ( gcGrace != null )
+ gcGraceInSeconds_ = Integer.parseInt(gcGrace);
+
/* Zookeeper's session timeout */
String zkSessionTimeout = xmlUtils.getNodeValue("/Storage/ZookeeperSessionTimeout");
if ( zkSessionTimeout != null )
@@ -462,6 +465,11 @@
}
}
+ public static int getGcGraceInSeconds()
+ {
+ return gcGraceInSeconds_;
+ }
+
public static String getHashingStrategy()
{
return hashingStrategy_;
Modified: incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java?rev=766134&r1=766133&r2=766134&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/db/ColumnFamilyStore.java Fri Apr 17 20:08:10 2009
@@ -616,8 +616,6 @@
return removeDeleted(cf);
}
- static final int GC_GRACE_IN_SECONDS = 10 * 24 * 3600; // 10 days
-
/*
This is complicated because we need to preserve deleted columns, supercolumns, and columnfamilies
until they have been deleted for at least GC_GRACE_IN_SECONDS. But, we do not need to preserve
@@ -626,7 +624,7 @@
*/
static ColumnFamily removeDeleted(ColumnFamily cf)
{
- return removeDeleted(cf, (int)(System.currentTimeMillis() / 1000) - GC_GRACE_IN_SECONDS);
+ return removeDeleted(cf, (int)(System.currentTimeMillis() / 1000) - DatabaseDescriptor.getGcGraceInSeconds());
}
static ColumnFamily removeDeleted(ColumnFamily cf, int gcBefore)