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)