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