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)