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();
+ }
}