Author: slebresne
Date: Tue Nov 29 18:34:07 2011
New Revision: 1208012

URL: http://svn.apache.org/viewvc?rev=1208012&view=rev
Log:
Commit #3539 to 1.0.5 branch

Modified:
    cassandra/branches/cassandra-1.0.5/CHANGES.txt
    
cassandra/branches/cassandra-1.0.5/src/java/org/apache/cassandra/service/StorageProxy.java

Modified: cassandra/branches/cassandra-1.0.5/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.5/CHANGES.txt?rev=1208012&r1=1208011&r2=1208012&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.5/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0.5/CHANGES.txt Tue Nov 29 18:34:07 2011
@@ -1,5 +1,6 @@
 1.0.5
   * revert CASSANDRA-3407 (see CASSANDRA-3540)
+  * fix assertion error while forwarding writes to local nodes (CASSANDRA-3539)
 
 1.0.4
  * fix self-hinting of timed out read repair updates and make hinted handoff

Modified: 
cassandra/branches/cassandra-1.0.5/src/java/org/apache/cassandra/service/StorageProxy.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.5/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1208012&r1=1208011&r2=1208012&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0.5/src/java/org/apache/cassandra/service/StorageProxy.java
 (original)
+++ 
cassandra/branches/cassandra-1.0.5/src/java/org/apache/cassandra/service/StorageProxy.java
 Tue Nov 29 18:34:07 2011
@@ -411,14 +411,17 @@ public class StorageProxy implements Sto
                     Iterator<InetAddress> iter = 
messages.getValue().iterator();
                     InetAddress target = iter.next();
                     // Add all the other destinations of the same message as a 
header in the primary message.
-                    FastByteArrayOutputStream bos = new 
FastByteArrayOutputStream();
-                    DataOutputStream dos = new DataOutputStream(bos);
-                    while (iter.hasNext())
+                    if (iter.hasNext())
                     {
-                        InetAddress destination = iter.next();
-                        dos.write(destination.getAddress());
+                        FastByteArrayOutputStream bos = new 
FastByteArrayOutputStream();
+                        DataOutputStream dos = new DataOutputStream(bos);
+                        while (iter.hasNext())
+                        {
+                            InetAddress destination = iter.next();
+                            dos.write(destination.getAddress());
+                        }
+                        message = 
message.withHeaderAdded(RowMutation.FORWARD_HEADER, bos.toByteArray());
                     }
-                    message = 
message.withHeaderAdded(RowMutation.FORWARD_HEADER, bos.toByteArray());
                     // send the combined message + forward headers
                     MessagingService.instance().sendRR(message, target, 
handler);
                 }


Reply via email to