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


Reply via email to