Author: slebresne
Date: Thu Oct 27 16:22:12 2011
New Revision: 1189835

URL: http://svn.apache.org/viewvc?rev=1189835&view=rev
Log:
merge from 1.0

Modified:
    cassandra/trunk/   (props changed)
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/contrib/   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
   (props changed)
    cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
    
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java
    
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java
    
cassandra/trunk/src/java/org/apache/cassandra/thrift/TCustomServerSocket.java

Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 27 16:22:12 2011
@@ -4,7 +4,7 @@
 
/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1186803,1187333,1187339,1187477,1188740
 /cassandra/branches/cassandra-0.8.0:1125021-1130369
 /cassandra/branches/cassandra-0.8.1:1101014-1125018
-/cassandra/branches/cassandra-1.0:1167085-1187545,1188741,1188757,1189073
+/cassandra/branches/cassandra-1.0:1167085-1187545,1188741,1188757,1189073,1189738,1189822,1189831
 
/cassandra/branches/cassandra-1.0.0:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1:1102511-1125020

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1189835&r1=1189834&r2=1189835&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Oct 27 16:22:12 2011
@@ -26,6 +26,9 @@
  * CompactionManager is now responsible for checking for new candidates
    post-task execution, enabling more consistent leveled compaction 
    (CASSANDRA-3391)
+ * fix cassandra hanging on jsvc stop (CASSANDRA-3302)
+ * Avoid leveled compaction getting blocked on errors (CASSANDRA-3408)
+ * Make reloading the compaction strategy safe (CASSANDRA-3409)
 Merged from 0.8:
  * (CQL) update grammar to require key clause in DELETE statement
    (CASSANDRA-3349)

Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 27 16:22:12 2011
@@ -4,7 +4,7 @@
 
/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1186803,1187333,1187339,1187477,1188740
 /cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018
-/cassandra/branches/cassandra-1.0/contrib:1167085-1187545,1188741,1188757,1189073
+/cassandra/branches/cassandra-1.0/contrib:1167085-1187545,1188741,1188757,1189073,1189738,1189822,1189831
 
/cassandra/branches/cassandra-1.0.0/contrib:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1/contrib:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 27 16:22:12 2011
@@ -4,7 +4,7 @@
 
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1186803,1187333,1187339,1187477,1188740
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1187545,1188741,1188757,1189073
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1187545,1188741,1188757,1189073,1189738,1189822,1189831
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 27 16:22:12 2011
@@ -4,7 +4,7 @@
 
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1186803,1187333,1187339,1187477,1188740
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1187545,1188741,1188757,1189073
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1187545,1188741,1188757,1189073,1189738,1189822,1189831
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 27 16:22:12 2011
@@ -4,7 +4,7 @@
 
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1186803,1187333,1187339,1187477,1188740
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1187545,1188741,1188757,1189073
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1187545,1188741,1188757,1189073,1189738,1189822,1189831
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 27 16:22:12 2011
@@ -4,7 +4,7 @@
 
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1186803,1187333,1187339,1187477,1188740
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1187545,1188741,1188757,1189073
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1187545,1188741,1188757,1189073,1189738,1189822,1189831
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1102511-1125020

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 27 16:22:12 2011
@@ -4,7 +4,7 @@
 
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1186803,1187333,1187339,1187477,1188740
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1101014-1125018
-/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1187545,1188741,1188757,1189073
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1187545,1188741,1188757,1189073,1189738,1189822,1189831
 
/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
 
/cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1102511-1125020

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1189835&r1=1189834&r2=1189835&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Thu 
Oct 27 16:22:12 2011
@@ -178,8 +178,7 @@ public class ColumnFamilyStore implement
         if (!rowCacheKeysToSave.isModified())
             rowCacheKeysToSave = new 
DefaultInteger(metadata.getRowCacheKeysToSave());
 
-        compactionStrategy.shutdown();
-        compactionStrategy = metadata.createCompactionStrategyInstance(this);
+        maybeReloadCompactionStrategy();
 
         updateCacheSizes();
         scheduleCacheSaving(rowCacheSaveInSeconds.value(), 
keyCacheSaveInSeconds.value(), rowCacheKeysToSave.value());
@@ -187,6 +186,24 @@ public class ColumnFamilyStore implement
         indexManager.reload();
     }
 
+    private void maybeReloadCompactionStrategy()
+    {
+        // Check if there is a need for reloading
+        if 
(metadata.compactionStrategyClass.equals(compactionStrategy.getClass()) && 
metadata.compactionStrategyOptions.equals(compactionStrategy.getOptions()))
+            return;
+
+        CompactionManager.instance.getCompactionLock().lock();
+        try
+        {
+            compactionStrategy.shutdown();
+            compactionStrategy = 
metadata.createCompactionStrategyInstance(this);
+        }
+        finally
+        {
+            CompactionManager.instance.getCompactionLock().unlock();
+        }
+    }
+
     private ColumnFamilyStore(Table table, String columnFamilyName, 
IPartitioner partitioner, int generation, CFMetaData metadata)
     {
         assert metadata != null : "null metadata for " + table + ":" + 
columnFamilyName;

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java?rev=1189835&r1=1189834&r2=1189835&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
 Thu Oct 27 16:22:12 2011
@@ -63,6 +63,11 @@ public abstract class AbstractCompaction
         StorageService.optionalTasks.schedule(runnable, 5 * 60, 
TimeUnit.SECONDS);
     }
 
+    public Map<String, String> getOptions()
+    {
+        return options;
+    }
+
     /**
      * Releases any resources if this strategy is shutdown (when the CFS is 
reloaded after a schema change).
      * Default is to do nothing.

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java?rev=1189835&r1=1189834&r2=1189835&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java
 Thu Oct 27 16:22:12 2011
@@ -67,7 +67,10 @@ public abstract class AbstractCompaction
         Set<SSTableReader> marked = 
cfs.getDataTracker().markCompacting(sstables, min, max);
 
         if (marked == null || marked.isEmpty())
+        {
+            cancel();
             return false;
+        }
 
         this.sstables = marked;
         return true;
@@ -77,4 +80,8 @@ public abstract class AbstractCompaction
     {
         cfs.getDataTracker().unmarkCompacting(sstables);
     }
+
+    // Can be overriden for action that need to be performed if the task won't
+    // execute (if sstable can't be marked successfully)
+    protected void cancel() {}
 }

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java?rev=1189835&r1=1189834&r2=1189835&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java
 Thu Oct 27 16:22:12 2011
@@ -52,9 +52,15 @@ public class LeveledCompactionTask exten
     @Override
     public int execute(CompactionManager.CompactionExecutorStatsCollector 
collector) throws IOException
     {
-        int n = super.execute(collector);
-        latch.countDown();
-        return n;
+        try
+        {
+            int n = super.execute(collector);
+            return n;
+        }
+        finally
+        {
+            latch.countDown();
+        }
     }
 
     public boolean isDone()
@@ -79,4 +85,10 @@ public class LeveledCompactionTask exten
     {
         return false;
     }
+
+    @Override
+    protected void cancel()
+    {
+        latch.countDown();
+    }
 }

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/thrift/TCustomServerSocket.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/TCustomServerSocket.java?rev=1189835&r1=1189834&r2=1189835&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/thrift/TCustomServerSocket.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/thrift/TCustomServerSocket.java 
Thu Oct 27 16:22:12 2011
@@ -174,4 +174,12 @@ public class TCustomServerSocket extends
             serverSocket_ = null;
         }
     }
+
+    @Override
+    public void interrupt()
+    {
+        // The thread-safeness of this is dubious, but Java documentation 
suggests
+        // that it is safe to do this from a different thread context
+        close();
+    }
 }


Reply via email to