Author: jbellis
Date: Wed Nov 16 22:49:20 2011
New Revision: 1202918
URL: http://svn.apache.org/viewvc?rev=1202918&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/cql/Cql.g
cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java
cassandra/trunk/src/java/org/apache/cassandra/cql/UpdateStatement.java
cassandra/trunk/src/java/org/apache/cassandra/db/DataTracker.java
cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 16 22:49:20 2011
@@ -4,7 +4,7 @@
/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1198724,1198726-1199259,1199284,1200226,1200471
/cassandra/branches/cassandra-0.8.0:1125021-1130369
/cassandra/branches/cassandra-0.8.1:1101014-1125018
-/cassandra/branches/cassandra-1.0:1167085-1202429
+/cassandra/branches/cassandra-1.0:1167085-1202912
/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=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Nov 16 22:49:20 2011
@@ -8,6 +8,12 @@
* Use faster bytes comparison (CASSANDRA-3434)
+1.0.4
+ * fix "liveSize" stat when sstables are removed (CASSANDRA-3496)
+ * add bloom filter FP rates to nodetool cfstats (CASSANDRA-3347)
+ * record partitioner in sstable metadata component (CASSANDRA-3407)
+
+
1.0.3
* revert name-based query defragmentation aka CASSANDRA-2503 (CASSANDRA-3491)
* fix invalidate-related test failures (CASSANDRA-3437)
@@ -37,6 +43,7 @@ Merged from 0.8:
* `describe ring` command for CLI (CASSANDRA-3220)
* (Hadoop) skip empty rows when entire row is requested, redux
(CASSANDRA-2855)
+
1.0.2
* "defragment" rows for name-based queries under STCS (CASSANDRA-2503)
* Add timing information to cassandra-cli GET/SET/LIST queries
(CASSANDRA-3326)
Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov 16 22:49:20 2011
@@ -4,7 +4,7 @@
/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1198724,1198726-1199259,1199284,1200226,1200471
/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-1202429
+/cassandra/branches/cassandra-1.0/contrib:1167085-1202912
/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 Wed Nov 16 22:49:20 2011
@@ -4,7 +4,7 @@
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1198724,1198726-1199259,1199284,1200226,1200471
/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-1202429
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1202912
/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 Wed Nov 16 22:49:20 2011
@@ -4,7 +4,7 @@
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1198724,1198726-1199259,1199284,1200226,1200471
/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-1202429
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1202912
/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 Wed Nov 16 22:49:20 2011
@@ -4,7 +4,7 @@
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1198724,1198726-1199259,1199284,1200226,1200471
/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-1202429
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1202912
/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 Wed Nov 16 22:49:20 2011
@@ -4,7 +4,7 @@
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1198724,1198726-1199259,1199284,1200226,1200471
/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-1202429
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1202912
/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 Wed Nov 16 22:49:20 2011
@@ -4,7 +4,7 @@
/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1198724,1198726-1199259,1199284,1200226,1200471
/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-1202429
+/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1202912
/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/cql/Cql.g
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g Wed Nov 16 22:49:20
2011
@@ -471,6 +471,7 @@ termPairWithOperation[Map<Term, Operatio
| c=term ( '+' v=term { columns.put(key, new
Operation(c, org.apache.cassandra.cql.Operation.OperationType.PLUS, v)); }
| op='-'? v=intTerm
{ validateMinusSupplied(op, v, input);
+ if (op != null) v = new
Term(-(Long.valueOf(v.getText())), v.getType());
columns.put(key, new Operation(c,
org.apache.cassandra.cql.Operation.OperationType.MINUS, v)); } ))
;
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java Wed Nov 16
22:49:20 2011
@@ -54,6 +54,12 @@ public class Term
this.text = text == null ? "" : text;
this.type = type;
}
+
+ public Term(long value, TermType type)
+ {
+ this.text = String.valueOf(value);
+ this.type = type;
+ }
protected Term()
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/UpdateStatement.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/UpdateStatement.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/UpdateStatement.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/UpdateStatement.java Wed
Nov 16 22:49:20 2011
@@ -217,11 +217,6 @@ public class UpdateStatement extends Abs
try
{
value = Long.parseLong(op.b.getText());
-
- if (op.type == OperationType.MINUS)
- {
- if (value > 0) value *= -1;
- }
}
catch (NumberFormatException e)
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/DataTracker.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/DataTracker.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/DataTracker.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/DataTracker.java Wed Nov
16 22:49:20 2011
@@ -344,11 +344,10 @@ public class DataTracker
if (logger.isDebugEnabled())
logger.debug(String.format("removing %s from list of files
tracked for %s.%s",
sstable.descriptor, cfstore.table.name,
cfstore.getColumnFamilyName()));
+ liveSize.addAndGet(-sstable.bytesOnDisk());
boolean firstToCompact = sstable.markCompacted();
assert firstToCompact : sstable + " was already marked compacted";
-
sstable.releaseReference();
- liveSize.addAndGet(-sstable.bytesOnDisk());
}
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java Wed Nov
16 22:49:20 2011
@@ -62,7 +62,6 @@ public class SystemTable
private static final ByteBuffer TOKEN = ByteBufferUtil.bytes("Token");
private static final ByteBuffer GENERATION =
ByteBufferUtil.bytes("Generation");
private static final ByteBuffer CLUSTERNAME =
ByteBufferUtil.bytes("ClusterName");
- private static final ByteBuffer PARTITIONER =
ByteBufferUtil.bytes("Partioner");
private static final ByteBuffer CURRENT_LOCAL_NODE_ID_KEY =
ByteBufferUtil.bytes("CurrentLocal");
private static final ByteBuffer ALL_LOCAL_NODE_ID_KEY =
ByteBufferUtil.bytes("Local");
@@ -247,7 +246,7 @@ public class SystemTable
* One of three things will happen if you try to read the system table:
* 1. files are present and you can read them: great
* 2. no files are there: great (new node is assumed)
- * 3. files are present but you can't read them: bad (suspect that the
partitioner was changed).
+ * 3. files are present but you can't read them: bad
* @throws ConfigurationException
*/
public static void checkHealth() throws ConfigurationException, IOException
@@ -260,28 +259,26 @@ public class SystemTable
catch (AssertionError err)
{
// this happens when a user switches from OPP to RP.
- ConfigurationException ex = new ConfigurationException("Could not
read system table. Did you change partitioners?");
+ ConfigurationException ex = new ConfigurationException("Could not
read system table!");
ex.initCause(err);
throw ex;
}
SortedSet<ByteBuffer> cols = new
TreeSet<ByteBuffer>(BytesType.instance);
- cols.add(PARTITIONER);
cols.add(CLUSTERNAME);
QueryFilter filter =
QueryFilter.getNamesFilter(decorate(LOCATION_KEY), new QueryPath(STATUS_CF),
cols);
ColumnFamily cf =
table.getColumnFamilyStore(STATUS_CF).getColumnFamily(filter);
if (cf == null)
{
- // this is either a brand new node (there will be no files), or
the partitioner was changed from RP to OPP.
+ // this is a brand new node
ColumnFamilyStore cfs = table.getColumnFamilyStore(STATUS_CF);
if (!cfs.getSSTables().isEmpty())
- throw new ConfigurationException("Found system table files,
but they couldn't be loaded. Did you change the partitioner?");
+ throw new ConfigurationException("Found system table files,
but they couldn't be loaded!");
// no system files. this is a new node.
RowMutation rm = new RowMutation(Table.SYSTEM_TABLE, LOCATION_KEY);
cf = ColumnFamily.create(Table.SYSTEM_TABLE,
SystemTable.STATUS_CF);
- cf.addColumn(new Column(PARTITIONER,
ByteBufferUtil.bytes(DatabaseDescriptor.getPartitioner().getClass().getName()),
FBUtilities.timestampMicros()));
cf.addColumn(new Column(CLUSTERNAME,
ByteBufferUtil.bytes(DatabaseDescriptor.getClusterName()),
FBUtilities.timestampMicros()));
rm.add(cf);
rm.apply();
@@ -290,12 +287,8 @@ public class SystemTable
}
- IColumn partitionerCol = cf.getColumn(PARTITIONER);
IColumn clusterCol = cf.getColumn(CLUSTERNAME);
- assert partitionerCol != null;
assert clusterCol != null;
- if
(!DatabaseDescriptor.getPartitioner().getClass().getName().equals(ByteBufferUtil.string(partitionerCol.value())))
- throw new ConfigurationException("Detected partitioner mismatch!
Did you change the partitioner?");
String savedClusterName = ByteBufferUtil.string(clusterCol.value());
if (!DatabaseDescriptor.getClusterName().equals(savedClusterName))
throw new ConfigurationException("Saved cluster name " +
savedClusterName + " != configured name " +
DatabaseDescriptor.getClusterName());
Modified:
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java
Wed Nov 16 22:49:20 2011
@@ -56,7 +56,9 @@ public class Descriptor
// f (0.7.0): switched bloom filter implementations in data component
// g (0.8): tracks flushed-at context in metadata component
// h (1.0): tracks max client timestamp in metadata component
- public static final String CURRENT_VERSION = "hb";
+ // hb (1.0.3): records compression ration in metadata component
+ // hc (1.0.4): records partitioner in metadata component
+ public static final String CURRENT_VERSION = "hc";
public final File directory;
/** version has the following format: <code>[a-z]+</code> */
@@ -75,6 +77,7 @@ public class Descriptor
public final boolean metadataIncludesReplayPosition;
public final boolean tracksMaxTimestamp;
public final boolean hasCompressionRatio;
+ public final boolean hasPartitioner;
public enum TempState
{
@@ -117,6 +120,7 @@ public class Descriptor
metadataIncludesReplayPosition = version.compareTo("g") >= 0;
tracksMaxTimestamp = version.compareTo("h") >= 0;
hasCompressionRatio = version.compareTo("hb") >= 0;
+ hasPartitioner = version.compareTo("hc") >= 0;
isLatestVersion = version.compareTo(CURRENT_VERSION) == 0;
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java
Wed Nov 16 22:49:20 2011
@@ -29,6 +29,7 @@ import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.commitlog.ReplayPosition;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.utils.EstimatedHistogram;
@@ -40,6 +41,8 @@ import org.apache.cassandra.utils.Estima
* - estimated column count histogram
* - replay position
* - max column timestamp
+ * - compression ratio
+ * - partitioner
*
* An SSTableMetadata should be instantiated via the Collector,
openFromDescriptor()
* or createDefaultInstance()
@@ -52,20 +55,27 @@ public class SSTableMetadata
protected final ReplayPosition replayPosition;
protected final long maxTimestamp;
protected final double compressionRatio;
+ protected final String partitioner;
public static final SSTableMetadataSerializer serializer = new
SSTableMetadataSerializer();
private SSTableMetadata()
{
- this(defaultRowSizeHistogram(), defaultColumnCountHistogram(),
ReplayPosition.NONE, Long.MIN_VALUE, Double.MIN_VALUE);
+ this(defaultRowSizeHistogram(),
+ defaultColumnCountHistogram(),
+ ReplayPosition.NONE,
+ Long.MIN_VALUE,
+ Double.MIN_VALUE,
+
DatabaseDescriptor.getPartitioner().getClass().getCanonicalName());
}
- private SSTableMetadata(EstimatedHistogram rowSizes, EstimatedHistogram
columnCounts, ReplayPosition replayPosition, long maxTimestamp, double cr)
+ private SSTableMetadata(EstimatedHistogram rowSizes, EstimatedHistogram
columnCounts, ReplayPosition replayPosition, long maxTimestamp, double cr,
String partitioner)
{
this.estimatedRowSize = rowSizes;
this.estimatedColumnCount = columnCounts;
this.replayPosition = replayPosition;
this.maxTimestamp = maxTimestamp;
this.compressionRatio = cr;
+ this.partitioner = partitioner;
}
public static SSTableMetadata createDefaultInstance()
@@ -103,6 +113,11 @@ public class SSTableMetadata
return compressionRatio;
}
+ public String getPartitioner()
+ {
+ return partitioner;
+ }
+
static EstimatedHistogram defaultColumnCountHistogram()
{
// EH of 114 can track a max value of 2395318855, i.e., > 2B columns
@@ -158,7 +173,12 @@ public class SSTableMetadata
public SSTableMetadata finalizeMetadata()
{
- return new SSTableMetadata(estimatedRowSize, estimatedColumnCount,
replayPosition, maxTimestamp, compressionRatio);
+ return new SSTableMetadata(estimatedRowSize,
+ estimatedColumnCount,
+ replayPosition,
+ maxTimestamp,
+ compressionRatio,
+
DatabaseDescriptor.getPartitioner().getClass().getCanonicalName());
}
public Collector estimatedRowSize(EstimatedHistogram estimatedRowSize)
@@ -191,6 +211,7 @@ public class SSTableMetadata
ReplayPosition.serializer.serialize(sstableStats.getReplayPosition(), dos);
dos.writeLong(sstableStats.getMaxTimestamp());
dos.writeDouble(sstableStats.getCompressionRatio());
+ dos.writeUTF(sstableStats.getPartitioner());
}
public SSTableMetadata deserialize(Descriptor descriptor) throws
IOException
@@ -223,9 +244,12 @@ public class SSTableMetadata
: ReplayPosition.NONE;
long maxTimestamp = desc.tracksMaxTimestamp ? dis.readLong() :
Long.MIN_VALUE;
double compressionRatio = desc.hasCompressionRatio
- ? dis.readDouble()
- : Double.MIN_VALUE;
- return new SSTableMetadata(rowSizes, columnCounts, replayPosition,
maxTimestamp, compressionRatio);
+ ? dis.readDouble()
+ : Double.MIN_VALUE;
+ String partitioner = desc.hasPartitioner
+ ? dis.readUTF()
+ :
DatabaseDescriptor.getPartitioner().getClass().getCanonicalName();
+ return new SSTableMetadata(rowSizes, columnCounts, replayPosition,
maxTimestamp, compressionRatio, partitioner);
}
}
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
Wed Nov 16 22:49:20 2011
@@ -137,6 +137,12 @@ public class SSTableReader extends SSTab
?
SSTableMetadata.serializer.deserialize(descriptor)
:
SSTableMetadata.createDefaultInstance();
+ // check if sstable is created using same partitioner as this node
+ String partitionerName = partitioner.getClass().getCanonicalName();
+ if (!partitionerName.equals(sstableMetadata.getPartitioner()))
+ throw new RuntimeException(String.format("Cannot open %s because
partitioner does not match %s",
+ descriptor,
partitionerName));
+
SSTableReader sstable = new SSTableReader(descriptor,
components,
metadata,
Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java Wed Nov 16
22:49:20 2011
@@ -461,6 +461,8 @@ public class NodeCmd
outs.println("\t\tWrite Count: " + cfstore.getWriteCount());
outs.println("\t\tWrite Latency: " + String.format("%01.3f",
cfstore.getRecentWriteLatencyMicros() / 1000) + " ms.");
outs.println("\t\tPending Tasks: " +
cfstore.getPendingTasks());
+ outs.println("\t\tBloom Filter False Postives: " +
cfstore.getBloomFilterFalsePositives());
+ outs.println("\t\tBloom Filter False Ratio: " +
String.format("%01.5f", cfstore.getRecentBloomFilterFalseRatio()));
InstrumentingCacheMBean keyCacheMBean =
probe.getKeyCacheMBean(tableName, cfstore.getColumnFamilyName());
if (keyCacheMBean.getCapacity() > 0)
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java?rev=1202918&r1=1202917&r2=1202918&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java
Wed Nov 16 22:49:20 2011
@@ -148,6 +148,9 @@ public class SSTableReaderTest extends C
rm.apply();
}
store.forceBlockingFlush();
+
+ store.clearUnsafe();
+ store.loadNewSSTables();
assert store.getMaxRowSize() != 0;
}