Author: jbellis
Date: Thu Apr 21 16:20:47 2011
New Revision: 1095770
URL: http://svn.apache.org/viewvc?rev=1095770&view=rev
Log:
merge from 0.8
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/cli/CliUtils.java
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java
cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
cassandra/trunk/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamIn.java
cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java
cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTestAbstract.java
cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
cassandra/trunk/test/unit/org/apache/cassandra/streaming/SerializationsTest.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 21 16:20:47 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7:1026516-1094195,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473,1095696
+/cassandra/branches/cassandra-0.7:1026516-1095767
/cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090935-1095491,1095699
+/cassandra/branches/cassandra-0.8:1090935-1095769
/cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3:774578-796573
/incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
Modified: cassandra/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Apr 21 16:20:47 2011
@@ -57,10 +57,13 @@
* use 64KB flush buffer instead of in_memory_compaction_limit (CASSANDRA-2463)
* fix duplicate results from CFS.scan (CASSANDRA-2406)
* avoid caching token-only decoratedkeys (CASSANDRA-2416)
+ * preserve version when streaming data from old sstables (CASSANDRA-2283)
+ * fix backslash substitutions in CLI (CASSANDRA-2492)
* count a row deletion as one operation towards memtable threshold
(CASSANDRA-2519)
* fixes for verifying destination availability under hinted conditions
so UE can be thrown intead of timing out (CASSANDRA-2514)
+ * support LOCAL_QUORUM, EACH_QUORUM CLs outside of NTS (CASSANDRA-2516)
0.7.4
Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 21 16:20:47 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
-/cassandra/branches/cassandra-0.7/contrib:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473,1095696
+/cassandra/branches/cassandra-0.7/contrib:1026516-1095767
/cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090935-1095491,1095699
+/cassandra/branches/cassandra-0.8/contrib:1090935-1095769
/cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/contrib:774578-796573
/incubator/cassandra/branches/cassandra-0.4/contrib:810145-810987,810994-834239,834349-834350
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 21 16:20:47 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473,1095696
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1095767
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090935-1095491,1095699
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090935-1095769
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
/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
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 21 16:20:47 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473,1095696
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1095767
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090935-1095491,1095699
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090935-1095769
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
/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
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 21 16:20:47 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473,1095696
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1095767
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090935-1095491,1095699
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090935-1095769
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
/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
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 21 16:20:47 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473,1095696
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1095767
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090935-1095491,1095699
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090935-1095769
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
/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
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 21 16:20:47 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473,1095696
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1095767
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090935-1095491,1095699
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090935-1095769
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
/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
Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliUtils.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliUtils.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliUtils.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliUtils.java Thu Apr 21
16:20:47 2011
@@ -6,6 +6,7 @@ import java.util.Set;
import org.apache.cassandra.thrift.CfDef;
import org.apache.cassandra.thrift.IndexOperator;
import org.apache.cassandra.thrift.KsDef;
+import org.apache.commons.lang.StringEscapeUtils;
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -38,70 +39,16 @@ public class CliUtils
*/
public static String unescapeSQLString(String b)
{
- int j = 1;
- final char start = b.charAt(0);
- final char end = b.charAt(b.length() - 1);
-
- if (start != '\'' && end != '\'')
- {
- j = 0;
- }
-
- StringBuilder sb = new StringBuilder(b.length());
-
- for (int i = j; ((j == 0) ? i : i + 1) < b.length(); i++)
- {
- if (b.charAt(i) == '\\' && i + 2 < b.length())
- {
- char n = b.charAt(i + 1);
- switch (n)
- {
- case '0':
- sb.append("\0");
- break;
- case '\'':
- sb.append("'");
- break;
- case '"':
- sb.append("\"");
- break;
- case 'b':
- sb.append("\b");
- break;
- case 'n':
- sb.append("\n");
- break;
- case 'r':
- sb.append("\r");
- break;
- case 't':
- sb.append("\t");
- break;
- case 'Z':
- sb.append("\u001A");
- break;
- case '\\':
- sb.append("\\");
- break;
- case '%':
- sb.append("%");
- break;
- case '_':
- sb.append("_");
- break;
- default:
- sb.append(n);
- }
- }
- else
- {
- sb.append(b.charAt(i));
- }
- }
-
- return sb.toString();
+ if (b.charAt(0) == '\'' && b.charAt(b.length()-1) == '\'')
+ b = b.substring(1, b.length()-1);
+ return StringEscapeUtils.unescapeJava(b);
}
+ public static String escapeSQLString(String b)
+ {
+ // single quotes are not escaped in java, need to be for cli
+ return StringEscapeUtils.escapeJava(b).replace("\'", "\\'");
+ }
/**
* Returns IndexOperator from string representation
* @param operator - string representing IndexOperator (=, >=, >, <, <=)
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=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Thu
Apr 21 16:20:47 2011
@@ -590,17 +590,18 @@ public class ColumnFamilyStore implement
* When the sstable object is closed, it will be renamed to a non-temporary
* format, so incomplete sstables can be recognized and removed on startup.
*/
- public String getFlushPath(long estimatedSize)
+ public String getFlushPath(long estimatedSize, String version)
{
String location =
DatabaseDescriptor.getDataFileLocationForTable(table.name, estimatedSize);
if (location == null)
throw new RuntimeException("Insufficient disk space to flush " +
estimatedSize + " bytes");
- return getTempSSTablePath(location);
+ return getTempSSTablePath(location, version);
}
- public String getTempSSTablePath(String directory)
+ public String getTempSSTablePath(String directory, String version)
{
- Descriptor desc = new Descriptor(new File(directory),
+ Descriptor desc = new Descriptor(version,
+ new File(directory),
table.name,
columnFamily,
fileIndexGenerator.incrementAndGet(),
@@ -608,6 +609,11 @@ public class ColumnFamilyStore implement
return desc.filenameFor(Component.DATA);
}
+ public String getTempSSTablePath(String directory)
+ {
+ return getTempSSTablePath(directory, Descriptor.CURRENT_VERSION);
+ }
+
/** flush the given memtable and swap in a new one for its CFS, if it
hasn't been frozen already. threadsafe. */
Future<?> maybeSwitchMemtable(Memtable oldMemtable, final boolean
writeCommitLog)
{
@@ -2097,7 +2103,7 @@ public class ColumnFamilyStore implement
public SSTableWriter createFlushWriter(long estimatedRows, long
estimatedSize) throws IOException
{
- return new SSTableWriter(getFlushPath(estimatedSize), estimatedRows,
metadata, partitioner);
+ return new SSTableWriter(getFlushPath(estimatedSize,
Descriptor.CURRENT_VERSION), estimatedRows, metadata, partitioner);
}
public SSTableWriter createCompactionWriter(long estimatedRows, String
location) throws IOException
Modified: cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java Thu Apr 21
16:20:47 2011
@@ -254,18 +254,17 @@ public class Gossiper implements IFailur
}
/**
- * Removes the endpoint from gossip completely
+ * Removes the endpoint from unreachable endpoint set
*
* @param endpoint endpoint to be removed from the current membership.
*/
private void evictFromMembership(InetAddress endpoint)
{
unreachableEndpoints.remove(endpoint);
- endpointStateMap.remove(endpoint);
}
/**
- * Removes the endpoint from Gossip but retains endpoint state
+ * Removes the endpoint completely from Gossip
*/
public void removeEndpoint(InetAddress endpoint)
{
@@ -447,15 +446,20 @@ public class Gossiper implements IFailur
{
long duration = now - epState.getUpdateTimestamp();
- if
(StorageService.instance.getTokenMetadata().isMember(endpoint))
- epState.setHasToken(true);
// check if this is a fat client. fat clients are removed
automatically from
// gosip after FatClientTimeout
- if (!epState.getHasToken() && !epState.isAlive() &&
!justRemovedEndpoints.containsKey(endpoint) && (duration > FatClientTimeout))
+ if (!epState.getHasToken() && !epState.isAlive() && (duration
> FatClientTimeout))
{
- logger.info("FatClient " + endpoint + " has been silent
for " + FatClientTimeout + "ms, removing from gossip");
- removeEndpoint(endpoint); // will put it in
justRemovedEndpoints to respect quarantine delay
- evictFromMembership(endpoint); // can get rid of the state
immediately
+ if
(StorageService.instance.getTokenMetadata().isMember(endpoint))
+ epState.setHasToken(true);
+ else
+ {
+ if (!justRemovedEndpoints.containsKey(endpoint)) // if
the node was decommissioned, it will have been removed but still appear as a
fat client
+ {
+ logger.info("FatClient " + endpoint + " has been
silent for " + FatClientTimeout + "ms, removing from gossip");
+ removeEndpoint(endpoint); // after quarantine
justRemoveEndpoints will remove the state
+ }
+ }
}
if ( !epState.isAlive() && (duration > aVeryLongTime) )
@@ -474,6 +478,7 @@ public class Gossiper implements IFailur
if (logger.isDebugEnabled())
logger.debug(QUARANTINE_DELAY + " elapsed, " +
entry.getKey() + " gossip quarantine over");
justRemovedEndpoints.remove(entry.getKey());
+ endpointStateMap.remove(entry.getKey());
}
}
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
Thu Apr 21 16:20:47 2011
@@ -121,9 +121,18 @@ public abstract class AbstractReplicatio
public IWriteResponseHandler
getWriteResponseHandler(Collection<InetAddress> writeEndpoints,
Multimap<InetAddress,
InetAddress> hintedEndpoints,
- ConsistencyLevel
consistencyLevel)
+ ConsistencyLevel
consistency_level)
{
- return WriteResponseHandler.create(writeEndpoints, hintedEndpoints,
consistencyLevel, table);
+ if (consistency_level == ConsistencyLevel.LOCAL_QUORUM)
+ {
+ // block for in this context will be localnodes block.
+ return DatacenterWriteResponseHandler.create(writeEndpoints,
hintedEndpoints, consistency_level, table);
+ }
+ else if (consistency_level == ConsistencyLevel.EACH_QUORUM)
+ {
+ return DatacenterSyncWriteResponseHandler.create(writeEndpoints,
hintedEndpoints, consistency_level, table);
+ }
+ return WriteResponseHandler.create(writeEndpoints, hintedEndpoints,
consistency_level, table);
}
/**
Modified:
cassandra/trunk/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
Thu Apr 21 16:20:47 2011
@@ -144,27 +144,6 @@ public class NetworkTopologyStrategy ext
return datacenters.keySet();
}
- /**
- * This method will generate the QRH object and returns. If the Consistency
- * level is LOCAL_QUORUM then it will return a DCQRH with a map of local
rep
- * factor alone. If the consistency level is EACH_QUORUM then it will
- * return a DCQRH with a map of all the DC rep factor.
- */
- @Override
- public IWriteResponseHandler
getWriteResponseHandler(Collection<InetAddress> writeEndpoints,
Multimap<InetAddress, InetAddress> hintedEndpoints, ConsistencyLevel
consistency_level)
- {
- if (consistency_level == ConsistencyLevel.LOCAL_QUORUM)
- {
- // block for in this context will be localnodes block.
- return DatacenterWriteResponseHandler.create(writeEndpoints,
hintedEndpoints, consistency_level, table);
- }
- else if (consistency_level == ConsistencyLevel.EACH_QUORUM)
- {
- return DatacenterSyncWriteResponseHandler.create(writeEndpoints,
hintedEndpoints, consistency_level, table);
- }
- return super.getWriteResponseHandler(writeEndpoints, hintedEndpoints,
consistency_level);
- }
-
public void validateOptions() throws ConfigurationException
{
for (Entry<String,String> e : this.configOptions.entrySet())
Modified: cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamIn.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamIn.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamIn.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamIn.java Thu
Apr 21 16:20:47 2011
@@ -50,11 +50,6 @@ public class StreamIn
/**
* Request ranges to be transferred from source to local node
*/
- public static void requestRanges(InetAddress source, String tableName,
Collection<Range> ranges, OperationType type)
- {
- requestRanges(source, tableName, ranges, null, type);
- }
-
public static void requestRanges(InetAddress source, String tableName,
Collection<Range> ranges, Runnable callback, OperationType type)
{
assert ranges.size() > 0;
@@ -80,7 +75,7 @@ public class StreamIn
// new local sstable
Table table = Table.open(remotedesc.ksname);
ColumnFamilyStore cfStore =
table.getColumnFamilyStore(remotedesc.cfname);
- Descriptor localdesc =
Descriptor.fromFilename(cfStore.getFlushPath(remote.size));
+ Descriptor localdesc =
Descriptor.fromFilename(cfStore.getFlushPath(remote.size, remote.desc.version));
return new PendingFile(localdesc, remote);
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java Thu
Apr 21 16:20:47 2011
@@ -602,7 +602,7 @@ public class FBUtilities
public static String toString(Map<?,?> map)
{
- Joiner.MapJoiner joiner = Joiner.on(",").withKeyValueSeparator(":");
+ Joiner.MapJoiner joiner = Joiner.on(", ").withKeyValueSeparator(":");
return joiner.join(map);
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java Thu Apr 21
16:20:47 2011
@@ -245,4 +245,17 @@ public class CliTest extends CleanupHelp
errStream.reset(); // no errors to the end user.
}
}
-}
+
+ @Test
+ public void testEscape()
+ {
+ //escaped is the string read from the cli.
+ String escaped = "backspace \\b tab \\t linefeed \\n form feed \\f
carriage return \\r duble quote \\\" " +
+ "single quote \\' backslash \\\\";
+ String unescaped = "backspace \b tab \t linefeed \n form feed \f
carriage return \r duble quote \" " +
+ "single quote ' backslash \\";
+ // when read from the cli may have single quotes around it
+ assertEquals(unescaped, CliUtils.unescapeSQLString("'" + escaped +
"'"));
+ assertEquals(escaped, CliUtils.escapeSQLString(unescaped));
+ }
+}
\ No newline at end of file
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java Thu Apr 21
16:20:47 2011
@@ -55,6 +55,7 @@ import org.apache.cassandra.db.migration
import org.apache.cassandra.db.migration.UpdateColumnFamily;
import org.apache.cassandra.db.migration.UpdateKeyspace;
import org.apache.cassandra.io.SerDeUtils;
+import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.locator.OldNetworkTopologyStrategy;
import org.apache.cassandra.locator.SimpleStrategy;
import org.apache.cassandra.net.MessagingService;
@@ -319,7 +320,7 @@ public class DefsTest extends CleanupHel
ColumnFamilyStore store =
Table.open(cfm.ksName).getColumnFamilyStore(cfm.cfName);
assert store != null;
store.forceBlockingFlush();
- store.getFlushPath(1024);
+ store.getFlushPath(1024, Descriptor.CURRENT_VERSION);
assert DefsTable.getFiles(cfm.ksName, cfm.cfName).size() > 0;
new DropColumnFamily(ks.name, cfm.cfName).apply();
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTestAbstract.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTestAbstract.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTestAbstract.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/service/AntiEntropyServiceTestAbstract.java
Thu Apr 21 16:20:47 2011
@@ -106,7 +106,7 @@ public abstract class AntiEntropyService
Gossiper.instance.initializeNodeUnsafe(REMOTE, 1);
local_range = StorageService.instance.getLocalPrimaryRange();
-
+
// random session id for each test
request = new TreeRequest(UUID.randomUUID().toString(), LOCAL,
local_range, new CFPair(tablename, cfname));
}
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=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
Thu Apr 21 16:20:47 2011
@@ -37,6 +37,7 @@ public class BootstrapTest extends Schem
public void testGetNewNames() throws IOException
{
Descriptor desc = Descriptor.fromFilename(new File("Keyspace1",
"Standard1-500-Data.db").toString());
+ assert !desc.isLatestVersion; // deliberately test old version; see
CASSANDRA-2283
PendingFile inContext = new PendingFile(null, desc, "Data.db",
Arrays.asList(new Pair<Long,Long>(0L, 1L)), OperationType.BOOTSTRAP);
PendingFile outContext = StreamIn.getContextMapping(inContext);
@@ -45,7 +46,8 @@ public class BootstrapTest extends Schem
// nothing else should
assertEquals(inContext.component, outContext.component);
- assertEquals(inContext.desc.ksname, outContext.desc.ksname);
- assertEquals(inContext.desc.cfname, outContext.desc.cfname);
+ assertEquals(desc.ksname, outContext.desc.ksname);
+ assertEquals(desc.cfname, outContext.desc.cfname);
+ assertEquals(desc.version, outContext.desc.version);
}
}
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/streaming/SerializationsTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/streaming/SerializationsTest.java?rev=1095770&r1=1095769&r2=1095770&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/streaming/SerializationsTest.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/streaming/SerializationsTest.java
Thu Apr 21 16:20:47 2011
@@ -50,10 +50,10 @@ public class SerializationsTest extends
private void testPendingFileWrite() throws IOException
{
// make sure to test serializing null and a pf with no sstable.
- PendingFile normal = makePendingFile(true, "fake_component", 100,
OperationType.BOOTSTRAP);
- PendingFile noSections = makePendingFile(true, "not_real", 0,
OperationType.AES);
- PendingFile noSST = makePendingFile(false, "also_fake", 100,
OperationType.RESTORE_REPLICA_COUNT);
-
+ PendingFile normal = makePendingFile(true, 100,
OperationType.BOOTSTRAP);
+ PendingFile noSections = makePendingFile(true, 0, OperationType.AES);
+ PendingFile noSST = makePendingFile(false, 100,
OperationType.RESTORE_REPLICA_COUNT);
+
DataOutputStream out = getOutput("streaming.PendingFile.bin");
PendingFile.serializer().serialize(normal, out, getVersion());
PendingFile.serializer().serialize(noSections, out, getVersion());
@@ -78,15 +78,15 @@ public class SerializationsTest extends
private void testStreamHeaderWrite() throws IOException
{
- StreamHeader sh0 = new StreamHeader("Keyspace1", 123L,
makePendingFile(true, "zz", 100, OperationType.BOOTSTRAP));
- StreamHeader sh1 = new StreamHeader("Keyspace1", 124L,
makePendingFile(false, "zz", 100, OperationType.BOOTSTRAP));
+ StreamHeader sh0 = new StreamHeader("Keyspace1", 123L,
makePendingFile(true, 100, OperationType.BOOTSTRAP));
+ StreamHeader sh1 = new StreamHeader("Keyspace1", 124L,
makePendingFile(false, 100, OperationType.BOOTSTRAP));
Collection<PendingFile> files = new ArrayList<PendingFile>();
for (int i = 0; i < 50; i++)
- files.add(makePendingFile(i % 2 == 0, "aa", 100,
OperationType.BOOTSTRAP));
- StreamHeader sh2 = new StreamHeader("Keyspace1", 125L,
makePendingFile(true, "bb", 100, OperationType.BOOTSTRAP), files);
+ files.add(makePendingFile(i % 2 == 0, 100,
OperationType.BOOTSTRAP));
+ StreamHeader sh2 = new StreamHeader("Keyspace1", 125L,
makePendingFile(true, 100, OperationType.BOOTSTRAP), files);
StreamHeader sh3 = new StreamHeader("Keyspace1", 125L, null, files);
- StreamHeader sh4 = new StreamHeader("Keyspace1", 125L,
makePendingFile(true, "bb", 100, OperationType.BOOTSTRAP), new
ArrayList<PendingFile>());
-
+ StreamHeader sh4 = new StreamHeader("Keyspace1", 125L,
makePendingFile(true, 100, OperationType.BOOTSTRAP), new
ArrayList<PendingFile>());
+
DataOutputStream out = getOutput("streaming.StreamHeader.bin");
StreamHeader.serializer().serialize(sh0, out, getVersion());
StreamHeader.serializer().serialize(sh1, out, getVersion());
@@ -132,13 +132,13 @@ public class SerializationsTest extends
in.close();
}
- private static PendingFile makePendingFile(boolean sst, String comp, int
numSecs, OperationType op)
+ private static PendingFile makePendingFile(boolean sst, int numSecs,
OperationType op)
{
Descriptor desc = new Descriptor("z", new File("path/doesn't/matter"),
"Keyspace1", "Standard1", 23, false);
List<Pair<Long, Long>> sections = new ArrayList<Pair<Long, Long>>();
for (int i = 0; i < numSecs; i++)
sections.add(new Pair<Long, Long>(new Long(i), new Long(i * i)));
- return new PendingFile(sst ? makeSSTable() : null, desc, comp,
sections, op);
+ return new PendingFile(sst ? makeSSTable() : null, desc,
SSTable.COMPONENT_DATA, sections, op);
}
private void testStreamRequestMessageWrite() throws IOException
@@ -147,9 +147,9 @@ public class SerializationsTest extends
for (int i = 0; i < 5; i++)
ranges.add(new Range(new
BytesToken(ByteBufferUtil.bytes(Integer.toString(10*i))), new
BytesToken(ByteBufferUtil.bytes(Integer.toString(10*i+5)))));
StreamRequestMessage msg0 = new
StreamRequestMessage(FBUtilities.getLocalAddress(), ranges, "Keyspace1", 123L,
OperationType.RESTORE_REPLICA_COUNT);
- StreamRequestMessage msg1 = new
StreamRequestMessage(FBUtilities.getLocalAddress(), makePendingFile(true, "aa",
100, OperationType.BOOTSTRAP), 124L);
- StreamRequestMessage msg2 = new
StreamRequestMessage(FBUtilities.getLocalAddress(), makePendingFile(false,
"aa", 100, OperationType.BOOTSTRAP), 124L);
-
+ StreamRequestMessage msg1 = new
StreamRequestMessage(FBUtilities.getLocalAddress(), makePendingFile(true, 100,
OperationType.BOOTSTRAP), 124L);
+ StreamRequestMessage msg2 = new
StreamRequestMessage(FBUtilities.getLocalAddress(), makePendingFile(false, 100,
OperationType.BOOTSTRAP), 124L);
+
DataOutputStream out = getOutput("streaming.StreamRequestMessage.bin");
StreamRequestMessage.serializer().serialize(msg0, out, getVersion());
StreamRequestMessage.serializer().serialize(msg1, out, getVersion());