Author: jbellis
Date: Thu Nov 18 07:19:16 2010
New Revision: 1036330
URL: http://svn.apache.org/viewvc?rev=1036330&view=rev
Log:
merge from 0.7
Modified:
cassandra/trunk/ (props changed)
cassandra/trunk/CHANGES.txt
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/ColumnFamilyStoreMBean.java
cassandra/trunk/src/java/org/apache/cassandra/service/AntiEntropyService.java
cassandra/trunk/src/java/org/apache/cassandra/streaming/PendingFile.java
cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 18 07:19:16 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6:922689-1035020,1035656
-/cassandra/branches/cassandra-0.7:1026517-1035659
+/cassandra/branches/cassandra-0.6:922689-1036176
+/cassandra/branches/cassandra-0.7:1026517-1036329
/incubator/cassandra/branches/cassandra-0.3:774578-796573
/incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5:888872-915439
Modified: cassandra/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Nov 18 07:19:16 2010
@@ -2,6 +2,11 @@ dev
* add clustertool, config-converter, sstablekeys, and schematool
Windows .bat files (CASSANDRA-1723)
* reject range queries received during bootstrap (CASSANDRA-1739)
+ * fix wrapping-range queries on non-minimum token (CASSANDRA-1700)
+ * add nodetool cfhistogram (CASSANDRA-1698)
+ * limit repaired ranges to what the nodes have in common (CASSANDRA-1674)
+ * index scan treats missing columns as not matching secondary
+ expressions (CASSANDRA-1745)
* Update windows .bat files to work outside of main Cassandra
directory (CASSANDRA-1713)
* log threshold causing memtable flush (CASSANDRA-1675)
@@ -32,6 +37,8 @@ dev
* fix tombstoning of supercolumns in range queries (CASSANDRA-1734)
* clear endpoint cache after updating keyspace metadata (CASSANDRA-1741)
* fix wrapping-range queries on non-minimum token (CASSANDRA-1700)
+ * truncate includes secondary indexes (CASSANDRA-1747)
+ * retain reference to PendingFile sstables (CASSANDRA-1749)
0.7.0-beta3
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 18 07:19:16 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1035020,1035656
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026517-1035659
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1036176
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026517-1036329
/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-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Cassandra.java:888872-903502
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 18 07:19:16 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1035020,1035656
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026517-1035659
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1036176
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026517-1036329
/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-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Column.java:888872-903502
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 18 07:19:16 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1035020,1035656
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026517-1035659
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1036176
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026517-1036329
/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-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:888872-903502
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 18 07:19:16 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1035020,1035656
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026517-1035659
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1036176
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026517-1036329
/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-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:888872-903502
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Nov 18 07:19:16 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1035020,1035656
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026517-1035659
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1036176
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026517-1036329
/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-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:888872-903502
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=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Thu
Nov 18 07:19:16 2010
@@ -1435,7 +1435,7 @@ public class ColumnFamilyStore implement
// check column data vs expression
IColumn column = data.getColumn(expression.column_name);
if (column == null)
- continue;
+ return false;
int v = data.getComparator().compare(column.value(),
expression.value);
if (!satisfies(v, expression.op))
return false;
@@ -1640,13 +1640,16 @@ public class ColumnFamilyStore implement
{
// putting markCompacted on the commitlogUpdater thread
ensures it will run
// after any compactions that were in progress when truncate
was called, are finished
- List<SSTableReader> truncatedSSTables = new
ArrayList<SSTableReader>();
- for (SSTableReader sstable : ssTables.getSSTables())
+ for (ColumnFamilyStore cfs :
Iterables.concat(indexedColumns.values(),
Arrays.asList(ColumnFamilyStore.this)))
{
- if (!sstable.newSince(truncatedAt))
- truncatedSSTables.add(sstable);
+ List<SSTableReader> truncatedSSTables = new
ArrayList<SSTableReader>();
+ for (SSTableReader sstable : cfs.getSSTables())
+ {
+ if (!sstable.newSince(truncatedAt))
+ truncatedSSTables.add(sstable);
+ }
+ cfs.markCompacted(truncatedSSTables);
}
- markCompacted(truncatedSSTables);
// Invalidate row cache
invalidateRowCache();
@@ -1832,4 +1835,34 @@ public class ColumnFamilyStore implement
{
return ssTables.estimatedKeys();
}
+
+ public long[] getEstimatedRowSizeHistogram()
+ {
+ long[] histogram = new long[90];
+
+ for (SSTableReader sstable : ssTables)
+ {
+ long[] rowSize = sstable.getEstimatedRowSize().get(false);
+
+ for (int i = 0; i < histogram.length; i++)
+ histogram[i] += rowSize[i];
+ }
+
+ return histogram;
+ }
+
+ public long[] getEstimatedColumnCountHistogram()
+ {
+ long[] histogram = new long[90];
+
+ for (SSTableReader sstable : ssTables)
+ {
+ long[] columnSize = sstable.getEstimatedColumnCount().get(false);
+
+ for (int i = 0; i < histogram.length; i++)
+ histogram[i] += columnSize[i];
+ }
+
+ return histogram;
+ }
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java?rev=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
Thu Nov 18 07:19:16 2010
@@ -212,4 +212,7 @@ public interface ColumnFamilyStoreMBean
public void setMemtableOperationsInMillions(double ops);
public long estimateKeys();
+
+ public long[] getEstimatedRowSizeHistogram();
+ public long[] getEstimatedColumnCountHistogram();
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/service/AntiEntropyService.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/AntiEntropyService.java?rev=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/service/AntiEntropyService.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/service/AntiEntropyService.java
Thu Nov 18 07:19:16 2010
@@ -433,14 +433,14 @@ public class AntiEntropyService
public final TreeRequest request;
public final MerkleTree ltree;
public final MerkleTree rtree;
- public final List<MerkleTree.TreeRange> differences;
+ public final List<Range> differences;
public Differencer(TreeRequest request, MerkleTree ltree, MerkleTree
rtree)
{
this.request = request;
this.ltree = ltree;
this.rtree = rtree;
- differences = new ArrayList<MerkleTree.TreeRange>();
+ differences = new ArrayList<Range>();
}
/**
@@ -461,31 +461,22 @@ public class AntiEntropyService
Set<Range> interesting = new
HashSet(ss.getRangesForEndpoint(request.cf.left, local));
interesting.retainAll(ss.getRangesForEndpoint(request.cf.left,
request.endpoint));
- // compare trees, and filter out uninteresting differences
+ // compare trees, and collect interesting differences
for (MerkleTree.TreeRange diff : MerkleTree.difference(ltree,
rtree))
- {
for (Range localrange: interesting)
- {
- if (diff.intersects(localrange))
- {
- differences.add(diff);
- break; // the inner loop
- }
- }
- }
+ differences.addAll(diff.intersectionWith(localrange));
// choose a repair method based on the significance of the
difference
- float difference = differenceFraction();
- String format = "Endpoints " + local + " and " + request.endpoint
+ " are %s for " + request.cf;
- if (difference == 0.0)
+ String format = "Endpoints " + local + " and " + request.endpoint
+ " %s for " + request.cf;
+ if (differences.isEmpty())
{
- logger.info(String.format(format, "consistent"));
+ logger.info(String.format(format, "are consistent"));
AntiEntropyService.instance.completedRequest(request);
return;
}
// non-0 difference: perform streaming repair
- logger.info(String.format(format, (difference * 100) + "% out of
sync"));
+ logger.info(String.format(format, "have " + differences.size() + "
range(s) out of sync"));
try
{
performStreamingRepair();
@@ -497,18 +488,6 @@ public class AntiEntropyService
}
/**
- * @return the fraction of the keyspace that is different, as
represented by our
- * list of different ranges. A range at depth 0 == 1.0, at depth 1 ==
0.5, etc.
- */
- float differenceFraction()
- {
- double fraction = 0.0;
- for (MerkleTree.TreeRange diff : differences)
- fraction += 1.0 / Math.pow(2, diff.depth);
- return (float)fraction;
- }
-
- /**
* Starts sending/receiving our list of differences to/from the remote
endpoint: creates a callback
* that will be called out of band once the streams complete.
*/
Modified:
cassandra/trunk/src/java/org/apache/cassandra/streaming/PendingFile.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/PendingFile.java?rev=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/PendingFile.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/PendingFile.java
Thu Nov 18 07:19:16 2010
@@ -31,6 +31,7 @@ import org.apache.commons.lang.StringUti
import org.apache.cassandra.io.ICompactSerializer;
import org.apache.cassandra.io.sstable.Descriptor;
+import org.apache.cassandra.io.sstable.SSTable;
import org.apache.cassandra.utils.Pair;
/**
@@ -45,6 +46,9 @@ public class PendingFile
return serializer_;
}
+ // NB: this reference prevents garbage collection of the sstable on the
source node
+ private final SSTable sstable;
+
public final Descriptor desc;
public final String component;
public final List<Pair<Long,Long>> sections;
@@ -53,11 +57,12 @@ public class PendingFile
public PendingFile(Descriptor desc, PendingFile pf)
{
- this(desc, pf.component, pf.sections);
+ this(null, desc, pf.component, pf.sections);
}
- public PendingFile(Descriptor desc, String component,
List<Pair<Long,Long>> sections)
+ public PendingFile(SSTable sstable, Descriptor desc, String component,
List<Pair<Long,Long>> sections)
{
+ this.sstable = sstable;
this.desc = desc;
this.component = component;
this.sections = sections;
@@ -124,7 +129,7 @@ public class PendingFile
List<Pair<Long,Long>> sections = new
ArrayList<Pair<Long,Long>>(count);
for (int i = 0; i < count; i++)
sections.add(new Pair<Long,Long>(Long.valueOf(dis.readLong()),
Long.valueOf(dis.readLong())));
- return new PendingFile(desc, component, sections);
+ return new PendingFile(null, desc, component, sections);
}
}
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java?rev=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java Thu
Nov 18 07:19:16 2010
@@ -166,7 +166,7 @@ public class StreamOut
List<Pair<Long,Long>> sections =
sstable.getPositionsForRanges(ranges);
if (sections.isEmpty())
continue;
- pending.add(new PendingFile(desc, SSTable.COMPONENT_DATA,
sections));
+ pending.add(new PendingFile(sstable, desc, SSTable.COMPONENT_DATA,
sections));
}
logger.info("Stream context metadata {}, {} sstables.", pending,
sstables.size());
return pending;
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=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java Thu Nov 18
07:19:16 2010
@@ -29,6 +29,7 @@ import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ExecutionException;
+import org.apache.cassandra.utils.EstimatedHistogram;
import org.apache.commons.cli.*;
import org.apache.cassandra.cache.JMXInstrumentedCacheMBean;
@@ -72,7 +73,7 @@ public class NodeCmd {
"clearsnapshot, tpstats, flush, drain, repair, decommission,
move, loadbalance, removetoken [status|force]|[token], " +
"setcachecapacity [keyspace] [cfname] [keycachecapacity]
[rowcachecapacity], " +
"getcompactionthreshold [keyspace] [cfname],
setcompactionthreshold [cfname] [minthreshold] [maxthreshold], " +
- "netstats [host]");
+ "netstats [host], cfhistograms <keyspace> <column_family>");
String usage = String.format("java %s --host <arg> <command>%n",
NodeCmd.class.getName());
hf.printHelp(usage, "", options, header);
}
@@ -354,6 +355,36 @@ public class NodeCmd {
outs.println("RemovalStatus: " + probe.getRemovalStatus());
}
+ private void printCfHistograms(String keySpace, String columnFamily,
PrintStream output)
+ {
+ ColumnFamilyStoreMBean store = this.probe.getCfsProxy(keySpace,
columnFamily);
+
+ // default is 90 offsets
+ long[] offsets = new EstimatedHistogram(90).getBucketOffsets();
+
+ long[] rrlh = store.getRecentReadLatencyHistogramMicros();
+ long[] rwlh = store.getRecentWriteLatencyHistogramMicros();
+ long[] sprh = store.getRecentSSTablesPerReadHistogram();
+ long[] ersh = store.getEstimatedRowSizeHistogram();
+ long[] ecch = store.getEstimatedColumnCountHistogram();
+
+ output.println(String.format("%s/%s histograms", keySpace,
columnFamily));
+
+ output.println(String.format("%-10s%10s%18s%18s%18s%18s",
+ "Offset", "SSTables", "Write Latency",
"Read Latency", "Row Size", "Column Count"));
+
+ for (int i = 0; i < offsets.length; i++)
+ {
+ output.println(String.format("%-10d%10s%18s%18s%18s%18s",
+ offsets[i],
+ (i < sprh.length ? sprh[i] : ""),
+ (i < rrlh.length ? rrlh[i] : ""),
+ (i < rwlh.length ? rwlh[i] : ""),
+ (i < ersh.length ? ersh[i] : ""),
+ (i < ecch.length ? ecch[i] : "")));
+ }
+ }
+
public static void main(String[] args) throws IOException,
InterruptedException, ParseException
{
CommandLineParser parser = new PosixParser();
@@ -610,6 +641,16 @@ public class NodeCmd {
String otherHost = arguments.length > 1 ? arguments[1] : null;
nodeCmd.printNetworkStats(otherHost == null ? null :
InetAddress.getByName(otherHost), System.out);
}
+ else if (cmdName.equals("cfhistograms"))
+ {
+ if (arguments.length < 3)
+ {
+ System.err.println("Usage of cfhistograms: <keyspace>
<column_family>.");
+ System.exit(1);
+ }
+
+ nodeCmd.printCfHistograms(arguments[1], arguments[2], System.out);
+ }
else if (cmdName.equals("version"))
{
nodeCmd.printReleaseVersion(System.out);
Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java Thu Nov
18 07:19:16 2010
@@ -452,17 +452,21 @@ public class NodeProbe
}
}
- private ColumnFamilyStoreMBean getCfsProxy(String ks, String cf) {
+ public ColumnFamilyStoreMBean getCfsProxy(String ks, String cf)
+ {
ColumnFamilyStoreMBean cfsProxy = null;
- try {
+ try
+ {
cfsProxy = JMX.newMBeanProxy(mbeanServerConn,
new
ObjectName("org.apache.cassandra.db:type=ColumnFamilies,keyspace="+ks+",columnfamily="+cf),
ColumnFamilyStoreMBean.class);
}
- catch (MalformedObjectNameException mone) {
+ catch (MalformedObjectNameException mone)
+ {
System.err.println("ColumnFamilyStore for " + ks + "/" + cf + "
not found.");
System.exit(1);
}
+
return cfsProxy;
}
}
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java?rev=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTest.java
Thu Nov 18 07:19:16 2010
@@ -82,7 +82,7 @@ public class AntiEntropyServiceTest exte
aes = AntiEntropyService.instance;
TokenMetadata tmd = StorageService.instance.getTokenMetadata();
tmd.clearUnsafe();
-
tmd.updateNormalToken(StorageService.getPartitioner().getRandomToken(), LOCAL);
+
StorageService.instance.setToken(StorageService.getPartitioner().getRandomToken());
tmd.updateNormalToken(StorageService.getPartitioner().getMinimumToken(),
REMOTE);
assert tmd.isMember(REMOTE);
@@ -210,19 +210,23 @@ public class AntiEntropyServiceTest exte
validator.complete();
MerkleTree rtree = validator.tree;
- // change a range in one of the trees
- Token min = StorageService.instance.getPartitioner().getMinimumToken();
- ltree.invalidate(min);
- MerkleTree.TreeRange changed = ltree.invalids(new Range(min,
min)).next();
+ // change a range we own in one of the trees
+ Token ltoken = StorageService.instance.getLocalToken();
+ ltree.invalidate(ltoken);
+ MerkleTree.TreeRange changed =
ltree.invalids(StorageService.instance.getLocalPrimaryRange()).next();
changed.hash("non-empty hash!".getBytes());
+ // the changed range has two halves, split on our local token: both
will be repaired
+ // (since this keyspace has RF > N, so every node is responsible for
the entire ring)
+ Set<Range> interesting = new HashSet<Range>();
+ interesting.add(new Range(changed.left, ltoken));
+ interesting.add(new Range(ltoken, changed.right));
// difference the trees
Differencer diff = new Differencer(request, ltree, rtree);
diff.run();
// ensure that the changed range was recorded
- assertEquals("Wrong number of differing ranges", 1,
diff.differences.size());
- assertEquals("Wrong differing range", changed,
diff.differences.get(0));
+ assertEquals("Wrong differing ranges", interesting, new
HashSet<Range>(diff.differences));
}
Set<InetAddress> addTokens(int max) throws Throwable
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java?rev=1036330&r1=1036329&r2=1036330&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
Thu Nov 18 07:19:16 2010
@@ -37,7 +37,7 @@ public class BootstrapTest extends Schem
public void testGetNewNames() throws IOException
{
Descriptor desc = Descriptor.fromFilename(new File("Keyspace1",
"Standard1-500-Data.db").toString());
- PendingFile inContext = new PendingFile(desc, "Data.db",
Arrays.asList(new Pair<Long,Long>(0L, 1L)));
+ PendingFile inContext = new PendingFile(null, desc, "Data.db",
Arrays.asList(new Pair<Long,Long>(0L, 1L)));
PendingFile outContext = StreamIn.getContextMapping(inContext);
// filename and generation are expected to have changed