You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/09/08 18:35:45 UTC

svn commit: r1166783 - in /cassandra/trunk: ./ contrib/ interface/thrift/gen-java/org/apache/cassandra/thrift/ src/java/org/apache/cassandra/locator/ src/java/org/apache/cassandra/service/

Author: jbellis
Date: Thu Sep  8 16:35:45 2011
New Revision: 1166783

URL: http://svn.apache.org/viewvc?rev=1166783&view=rev
Log:
merge from 0.8

Modified:
    cassandra/trunk/   (props changed)
    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/locator/AbstractNetworkTopologySnitch.java
    cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java

Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep  8 16:35:45 2011
@@ -1,7 +1,7 @@
 /cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1131291
 /cassandra/branches/cassandra-0.7:1026516-1163782
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1166261
+/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1166782
 /cassandra/branches/cassandra-0.8.0:1125021-1130369
 /cassandra/branches/cassandra-0.8.1:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689

Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep  8 16:35:45 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-1163782
 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1166261
+/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1166782
 /cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep  8 16:35:45 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-1131291
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1163782
 /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:1090934-1125013,1125019-1166261
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1166782
 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep  8 16:35:45 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-1131291
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1163782
 /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:1090934-1125013,1125019-1166261
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1166782
 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep  8 16:35:45 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-1131291
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1163782
 /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:1090934-1125013,1125019-1166261
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1166782
 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep  8 16:35:45 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-1131291
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1163782
 /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:1090934-1125013,1125019-1166261
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1166782
 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep  8 16:35:45 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-1131291
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1163782
 /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:1090934-1125013,1125019-1166261
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1166782
 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689

Modified: cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractNetworkTopologySnitch.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractNetworkTopologySnitch.java?rev=1166783&r1=1166782&r2=1166783&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractNetworkTopologySnitch.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractNetworkTopologySnitch.java Thu Sep  8 16:35:45 2011
@@ -83,14 +83,6 @@ public abstract class AbstractNetworkTop
         if (address.equals(a2) && !address.equals(a1))
             return 1;
 
-        String addressRack = getRack(address);
-        String a1Rack = getRack(a1);
-        String a2Rack = getRack(a2);
-        if (addressRack.equals(a1Rack) && !addressRack.equals(a2Rack))
-            return -1;
-        if (addressRack.equals(a2Rack) && !addressRack.equals(a1Rack))
-            return 1;
-
         String addressDatacenter = getDatacenter(address);
         String a1Datacenter = getDatacenter(a1);
         String a2Datacenter = getDatacenter(a2);
@@ -99,6 +91,13 @@ public abstract class AbstractNetworkTop
         if (addressDatacenter.equals(a2Datacenter) && !addressDatacenter.equals(a1Datacenter))
             return 1;
 
+        String addressRack = getRack(address);
+        String a1Rack = getRack(a1);
+        String a2Rack = getRack(a2);
+        if (addressRack.equals(a1Rack) && !addressRack.equals(a2Rack))
+            return -1;
+        if (addressRack.equals(a2Rack) && !addressRack.equals(a1Rack))
+            return 1;
         return 0;
     }
 }

Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1166783&r1=1166782&r2=1166783&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java Thu Sep  8 16:35:45 2011
@@ -582,6 +582,7 @@ public class StorageProxy implements Sto
 
         do
         {
+            readCallbacks.clear();
             List<ReadCommand> commandsToSend = commandsToRetry.isEmpty() ? commands : commandsToRetry;
 
             if (!commandsToRetry.isEmpty())
@@ -601,16 +602,9 @@ public class StorageProxy implements Sto
                 ReadCallback<Row> handler = getReadCallback(resolver, command, consistency_level, endpoints);
                 handler.assureSufficientLiveNodes();
                 assert !handler.endpoints.isEmpty();
+                readCallbacks.add(handler);
 
-                // The data-request message is sent to dataPoint, the node that will actually get
-                // the data for us. The other replicas are only sent a digest query.
-                ReadCommand digestCommand = null;
-                if (handler.endpoints.size() > 1)
-                {
-                    digestCommand = command.copy();
-                    digestCommand.setDigestQuery(true);
-                }
-
+                // The data-request message is sent to dataPoint, the node that will actually get the data for us
                 InetAddress dataPoint = handler.endpoints.get(0);
                 if (dataPoint.equals(FBUtilities.getBroadcastAddress()))
                 {
@@ -623,9 +617,13 @@ public class StorageProxy implements Sto
                     MessagingService.instance().sendRR(command, dataPoint, handler);
                 }
 
-                // We lazy-construct the digest Message object since it may not be necessary if we
-                // are doing a local digest read, or no digest reads at all.
-                MessageProducer producer = new CachingMessageProducer(digestCommand);
+                if (handler.endpoints.size() == 1)
+                    continue;
+
+                // send the other endpoints a digest request
+                ReadCommand digestCommand = command.copy();
+                digestCommand.setDigestQuery(true);
+                MessageProducer producer = null;
                 for (InetAddress digestPoint : handler.endpoints.subList(1, handler.endpoints.size()))
                 {
                     if (digestPoint.equals(FBUtilities.getBroadcastAddress()))
@@ -636,11 +634,13 @@ public class StorageProxy implements Sto
                     else
                     {
                         logger.debug("reading digest from {}", digestPoint);
+                        // (We lazy-construct the digest Message object since it may not be necessary if we
+                        // are doing a local digest read, or no digest reads at all.)
+                        if (producer == null)
+                            producer = new CachingMessageProducer(digestCommand);
                         MessagingService.instance().sendRR(producer, digestPoint, handler);
                     }
                 }
-
-                readCallbacks.add(handler);
             }
 
             if (repairCommands != Collections.EMPTY_LIST)
@@ -651,12 +651,11 @@ public class StorageProxy implements Sto
             for (int i = 0; i < commandsToSend.size(); i++)
             {
                 ReadCallback<Row> handler = readCallbacks.get(i);
-                Row row;
                 ReadCommand command = commandsToSend.get(i);
                 try
                 {
                     long startTime2 = System.currentTimeMillis();
-                    row = handler.get(); // CL.ONE is special cased here to ignore digests even if some have arrived
+                    Row row = handler.get();
                     if (row != null)
                         rows.add(row);
 
@@ -680,8 +679,9 @@ public class StorageProxy implements Sto
                         repairCommands = new ArrayList<ReadCommand>();
                     repairCommands.add(command);
 
+                    MessageProducer producer = new CachingMessageProducer(command);
                     for (InetAddress endpoint : handler.endpoints)
-                        MessagingService.instance().sendRR(command, endpoint, repairHandler);
+                        MessagingService.instance().sendRR(producer, endpoint, repairHandler);
 
                     if (repairResponseHandlers == null)
                         repairResponseHandlers = new ArrayList<RepairCallback>();
@@ -722,9 +722,8 @@ public class StorageProxy implements Sto
                         assert maxLiveColumns <= sliceCommand.count;
                         if ((maxLiveColumns == sliceCommand.count) && (liveColumnsInRow < sliceCommand.count))
                         {
-                            if (logger.isDebugEnabled())
-                                logger.debug("detected short read: expected {} columns, but only resolved {} columns",
-                                             sliceCommand.count, liveColumnsInRow);
+                            logger.debug("detected short read: expected {} columns, but only resolved {} columns",
+                                         sliceCommand.count, liveColumnsInRow);
 
                             int retryCount = sliceCommand.count + sliceCommand.count - liveColumnsInRow;
                             SliceFromReadCommand retryCommand = new SliceFromReadCommand(command.table,