Author: jbellis
Date: Fri Oct  2 19:31:05 2009
New Revision: 821137

URL: http://svn.apache.org/viewvc?rev=821137&view=rev
Log:
merge from 0.4 branch

Modified:
    incubator/cassandra/trunk/   (props changed)
    incubator/cassandra/trunk/CHANGES.txt
    
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Cassandra.java
   (props changed)
    
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Column.java
   (props changed)
    
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java
   (props changed)
    
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/NotFoundException.java
   (props changed)
    
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/SuperColumn.java
   (props changed)
    incubator/cassandra/trunk/src/java/org/   (props changed)
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java
    incubator/cassandra/trunk/test/unit/org/   (props changed)

Propchange: incubator/cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct  2 19:31:05 2009
@@ -1,2 +1,2 @@
 /incubator/cassandra/branches/cassandra-0.3:774578-796573
-/incubator/cassandra/branches/cassandra-0.4:810145-820400
+/incubator/cassandra/branches/cassandra-0.4:810145-821136

Modified: incubator/cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/CHANGES.txt?rev=821137&r1=821136&r2=821137&view=diff
==============================================================================
--- incubator/cassandra/trunk/CHANGES.txt (original)
+++ incubator/cassandra/trunk/CHANGES.txt Fri Oct  2 19:31:05 2009
@@ -5,6 +5,7 @@
  * Fix for serializing a row that only contains tombstones
    (CASSANDRA-458)
  * Fix for discarding unneeded commitlog segments (CASSANDRA-459)
+ * Add SnapshotBeforeCompaction configuration option (CASSANDRA-426)
 
 
 0.4.0

Propchange: 
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct  2 19:31:05 2009
@@ -1,3 +1,3 @@
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
-/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-820400
+/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-821136
 
/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Cassandra.java:749219-768588

Propchange: 
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct  2 19:31:05 2009
@@ -1,4 +1,4 @@
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
-/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-820400
+/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-821136
 
/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Column.java:749219-794428
 
/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/column_t.java:749219-768588

Propchange: 
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct  2 19:31:05 2009
@@ -1,3 +1,3 @@
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
-/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-820400
+/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-821136
 
/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:749219-768588

Propchange: 
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct  2 19:31:05 2009
@@ -1,3 +1,3 @@
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
-/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-820400
+/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-821136
 
/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:749219-768588

Propchange: 
incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct  2 19:31:05 2009
@@ -1,4 +1,4 @@
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
-/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-820400
+/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-821136
 
/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:749219-794428
 
/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:749219-768588

Propchange: incubator/cassandra/trunk/src/java/org/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct  2 19:31:05 2009
@@ -1,3 +1,3 @@
 /incubator/cassandra/branches/cassandra-0.3/src/java/org:774578-796573
-/incubator/cassandra/branches/cassandra-0.4/src/java/org:810145-820400
+/incubator/cassandra/branches/cassandra-0.4/src/java/org:810145-821136
 /incubator/cassandra/trunk/src/java/org:749219-769885

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=821137&r1=821136&r2=821137&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
 (original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
 Fri Oct  2 19:31:05 2009
@@ -128,6 +128,8 @@
     private static double commitLogSyncBatchMS_;
     private static int commitLogSyncPeriodMS_;
 
+    private static boolean snapshotBeforeCompaction_;
+
     static
     {
         try
@@ -305,18 +307,31 @@
             String framedRaw = 
xmlUtils.getNodeValue("/Storage/ThriftFramedTransport");
             if (framedRaw != null)
             {
-                if (framedRaw.compareToIgnoreCase("true") == 0 || 
-                        framedRaw.compareToIgnoreCase("false") == 0)
+                if (framedRaw.equalsIgnoreCase("true") || 
framedRaw.equalsIgnoreCase("false"))
                 {
                     thriftFramed_ = Boolean.valueOf(framedRaw);
                 }
                 else
                 {
-                    throw new ConfigurationException("Unrecognized value " + 
-                            "for ThriftFramedTransport.  Use 'true' or 
'false'."); 
+                    throw new ConfigurationException("Unrecognized value for 
ThriftFramedTransport.  Use 'true' or 'false'.");
+                }
+            }
+
+            /* snapshot-before-compaction.  defaults to false */
+            String sbc = 
xmlUtils.getNodeValue("/Storage/SnapshotBeforeCompaction");
+            if (sbc != null)
+            {
+                if (sbc.equalsIgnoreCase("true") || 
sbc.equalsIgnoreCase("false"))
+                {
+                    if (logger_.isDebugEnabled())
+                        logger_.debug("setting snapshotBeforeCompaction to " + 
sbc);
+                    snapshotBeforeCompaction_ = Boolean.valueOf(sbc);
+                }
+                else
+                {
+                    throw new ConfigurationException("Unrecognized value for 
SnapshotBeforeCompaction.  Use 'true' or 'false'.");
                 }
             }
-            
 
             /* Number of days to keep the memtable around w/o flushing */
             String lifetime = 
xmlUtils.getNodeValue("/Storage/MemtableFlushAfterMinutes");
@@ -973,4 +988,9 @@
     {
         return bmtThreshold_;
     }
+
+    public static boolean isSnapshotBeforeCompaction()
+    {
+        return snapshotBeforeCompaction_;
+    }
 }

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=821137&r1=821136&r2=821137&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
 Fri Oct  2 19:31:05 2009
@@ -417,14 +417,9 @@
 
     void forceBlockingFlush() throws IOException, ExecutionException, 
InterruptedException
     {
-        Memtable oldMemtable = getMemtableThreadSafe();
         Future<?> future = forceFlush();
         if (future != null)
             future.get();
-        /* this assert is not threadsafe -- the memtable could have been clean 
when forceFlush
-           checked it, but dirty now thanks to another thread.  But as long as 
we are only
-           calling this from single-threaded test code it is useful to have as 
a sanity check. */
-        assert oldMemtable.isFlushed() || oldMemtable.isClean(); 
     }
 
     public void forceFlushBinary()
@@ -833,6 +828,8 @@
     */
     private int doFileCompaction(Collection<SSTableReader> sstables) throws 
IOException
     {
+        if (DatabaseDescriptor.isSnapshotBeforeCompaction())
+            Table.open(table_).snapshot("compact-" + columnFamily_);
         logger_.info("Compacting [" + StringUtils.join(sstables, ",") + "]");
         String compactionFileLocation = 
DatabaseDescriptor.getDataFileLocationForTable(table_, 
getExpectedCompactedFileSize(sstables));
         // If the compaction file path is null that means we have no space 
left for this compaction.
@@ -1285,6 +1282,19 @@
      */
     public void snapshot(String snapshotName) throws IOException
     {
+        try
+        {
+            forceBlockingFlush();
+        }
+        catch (ExecutionException e)
+        {
+            throw new RuntimeException(e);
+        }
+        catch (InterruptedException e)
+        {
+            throw new AssertionError(e);
+        }
+
         for (SSTableReader ssTable : ssTables_)
         {
             // mkdir

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java?rev=821137&r1=821136&r2=821137&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java
 (original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java
 Fri Oct  2 19:31:05 2009
@@ -95,7 +95,7 @@
         else
         {
             if (column_path.super_column == null)
-                throw new InvalidRequestException("column parameter is not 
optional for super CF " + column_path.column_family);
+                throw new InvalidRequestException("supercolumn parameter is 
not optional for super CF " + column_path.column_family);
         }
         if (column_path.column != null)
         {

Propchange: incubator/cassandra/trunk/test/unit/org/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct  2 19:31:05 2009
@@ -1,3 +1,3 @@
 /incubator/cassandra/branches/cassandra-0.3/test/unit/org:774578-796573
-/incubator/cassandra/branches/cassandra-0.4/test/unit/org:810145-820400
+/incubator/cassandra/branches/cassandra-0.4/test/unit/org:810145-821136
 /incubator/cassandra/trunk/test/unit/org:749219-768583


Reply via email to