change SP to throw UE when hint queue is full instead of TOE, since we 
guarantee that no changes are performed
patch by jbellis; reviewed by slebresne for CASSANDRA-4414


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/200ba864
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/200ba864
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/200ba864

Branch: refs/heads/trunk
Commit: 200ba86477f49939630b75f989afe07a2d91185a
Parents: 2f4c7c4
Author: Jonathan Ellis <jbel...@apache.org>
Authored: Wed Jul 11 18:10:02 2012 -0500
Committer: Jonathan Ellis <jbel...@apache.org>
Committed: Fri Jul 13 11:31:24 2012 -0500

----------------------------------------------------------------------
 .../org/apache/cassandra/db/CounterColumn.java     |    3 ++-
 .../org/apache/cassandra/service/StorageProxy.java |   10 +++++-----
 2 files changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/200ba864/src/java/org/apache/cassandra/db/CounterColumn.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/CounterColumn.java 
b/src/java/org/apache/cassandra/db/CounterColumn.java
index 4b0bdc2..7ea6514 100644
--- a/src/java/org/apache/cassandra/db/CounterColumn.java
+++ b/src/java/org/apache/cassandra/db/CounterColumn.java
@@ -366,7 +366,8 @@ public class CounterColumn extends Column
 
         StorageProxy.performWrite(rm, ConsistencyLevel.ANY, localDataCenter, 
new StorageProxy.WritePerformer()
         {
-            public void apply(IMutation mutation, Collection<InetAddress> 
targets, IWriteResponseHandler responseHandler, String localDataCenter, 
ConsistencyLevel consistency_level) throws IOException, TimeoutException
+            public void apply(IMutation mutation, Collection<InetAddress> 
targets, IWriteResponseHandler responseHandler, String localDataCenter, 
ConsistencyLevel consistency_level)
+            throws IOException, TimeoutException, UnavailableException
             {
                 // We should only send to the remote replica, not the local one
                 targets.remove(local);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/200ba864/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java 
b/src/java/org/apache/cassandra/service/StorageProxy.java
index 8ae063b..7a79c06 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -112,7 +112,7 @@ public class StorageProxy implements StorageProxyMBean
                               IWriteResponseHandler responseHandler,
                               String localDataCenter,
                               ConsistencyLevel consistency_level)
-            throws IOException, TimeoutException
+            throws IOException, TimeoutException, UnavailableException
             {
                 assert mutation instanceof RowMutation;
                 sendToHintedEndpoints((RowMutation) mutation, targets, 
responseHandler, localDataCenter, consistency_level);
@@ -287,7 +287,7 @@ public class StorageProxy implements StorageProxyMBean
                                               IWriteResponseHandler 
responseHandler,
                                               String localDataCenter,
                                               ConsistencyLevel 
consistency_level)
-    throws IOException, TimeoutException
+    throws IOException, TimeoutException, UnavailableException
     {
         // Multimap that holds onto all the messages and addresses meant for a 
specific datacenter
         Map<String, Multimap<MessageOut, InetAddress>> dcMessages = new 
HashMap<String, Multimap<MessageOut, InetAddress>>(targets.size());
@@ -302,7 +302,7 @@ public class StorageProxy implements StorageProxyMBean
             if (totalHintsInProgress.get() > maxHintsInProgress
                 && (hintsInProgress.get(destination).get() > 0 && 
shouldHint(destination)))
             {
-                throw new TimeoutException();
+                throw new UnavailableException();
             }
 
             if (FailureDetector.instance.isAlive(destination))
@@ -576,7 +576,7 @@ public class StorageProxy implements StorageProxyMBean
                     // and we want to avoid blocking too much the MUTATION 
stage
                     
StageManager.getStage(Stage.REPLICATE_ON_WRITE).execute(new 
DroppableRunnable(MessagingService.Verb.READ)
                     {
-                        public void runMayThrow() throws IOException, 
TimeoutException
+                        public void runMayThrow() throws IOException, 
TimeoutException, UnavailableException
                         {
                             // send mutation to other replica
                             
sendToHintedEndpoints(cm.makeReplicationMutation(), targets, responseHandler, 
localDataCenter, consistency_level);
@@ -1254,7 +1254,7 @@ public class StorageProxy implements StorageProxyMBean
 
     public interface WritePerformer
     {
-        public void apply(IMutation mutation, Collection<InetAddress> targets, 
IWriteResponseHandler responseHandler, String localDataCenter, ConsistencyLevel 
consistency_level) throws IOException, TimeoutException;
+        public void apply(IMutation mutation, Collection<InetAddress> targets, 
IWriteResponseHandler responseHandler, String localDataCenter, ConsistencyLevel 
consistency_level) throws IOException, TimeoutException, UnavailableException;
     }
 
     private static abstract class DroppableRunnable implements Runnable

Reply via email to