Author: jbellis
Date: Tue May 26 20:23:16 2009
New Revision: 778871

URL: http://svn.apache.org/viewvc?rev=778871&view=rev
Log:
short circuits sending a message if the mutation's destination is the local 
node.  does not implement hint handling; takes the full message route if hints 
are involved.  patch by Sandeep Tata; reviewed by jbellis for CASSANDRA-132

Modified:
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java?rev=778871&r1=778870&r2=778871&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
 (original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
 Tue May 26 20:23:16 2009
@@ -84,7 +84,8 @@
                        {
                                Message hintedMessage = 
rm.makeRowMutationMessage();
                                hintedMessage.addHeader(RowMutation.HINT, 
EndPoint.toBytes(hint) );
-                               logger.debug("Sending the hint of " + 
target.getHost() + " to " + hint.getHost());
+                               if (logger.isDebugEnabled())
+                                   logger.debug("Sending the hint of " + 
hint.getHost() + " to " + target.getHost());
                                messageMap.put(target, hintedMessage);
                        }
                        else
@@ -121,8 +122,22 @@
                        {
                 Message message = entry.getValue();
                 EndPoint endpoint = entry.getKey();
-                logger.debug("insert writing key " + rm.key() + " to " + 
message.getMessageId() + "@" + endpoint);
-                MessagingService.getMessagingInstance().sendOneWay(message, 
endpoint);
+                // Check if local and not hinted
+                byte[] hintedBytes = message.getHeader(RowMutation.HINT);
+                if (endpoint.equals(StorageService.getLocalStorageEndPoint())
+                        && !(hintedBytes!= null && hintedBytes.length>0))
+                {
+                    if (logger.isDebugEnabled())
+                        logger.debug("locally writing writing key " + rm.key()
+                                + " to " + endpoint);
+                    rm.apply();
+                } else
+                {
+                    if (logger.isDebugEnabled())
+                        logger.debug("insert writing key " + rm.key() + " to "
+                                + message.getMessageId() + "@" + endpoint);
+                       
MessagingService.getMessagingInstance().sendOneWay(message, endpoint);
+                }
                        }
                }
         catch (IOException e)


Reply via email to