You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by yu...@apache.org on 2012/11/22 00:12:22 UTC

[6/6] git commit: Remove cassandra specific exceptions from JMX interface; patch by yukim reviewed by dbrosius for CASSANDRA-4893

Remove cassandra specific exceptions from JMX interface; patch by yukim reviewed by dbrosius for CASSANDRA-4893


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

Branch: refs/heads/cassandra-1.2
Commit: 8c24d019fced1bb6039310c192208721462d280a
Parents: ad36c8f
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Nov 21 17:05:51 2012 -0600
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Nov 21 17:05:51 2012 -0600

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../org/apache/cassandra/db/ColumnFamilyStore.java |   24 ++++-
 .../cassandra/db/ColumnFamilyStoreMBean.java       |    6 +-
 .../org/apache/cassandra/service/PBSPredictor.java |   10 +-
 .../cassandra/service/PBSPredictorMBean.java       |    2 +-
 .../apache/cassandra/service/StorageService.java   |   84 +++++++++++----
 .../cassandra/service/StorageServiceMBean.java     |   25 ++---
 src/java/org/apache/cassandra/tools/NodeCmd.java   |    6 +-
 src/java/org/apache/cassandra/tools/NodeProbe.java |   13 +--
 9 files changed, 104 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index da74896..b7cc394 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -20,6 +20,7 @@
  * Correctly handle prepared operation on collections (CASSANDRA-4945)
  * Fix CQL3 LIMIT (CASSANDRA-4877)
  * Fix Stress for CQL3 (CASSANDRA-4979)
+ * Remove cassandra specific exceptions from JMX interface (CASSANDRA-4893)
 Merged from 1.1:
  * add basic authentication support for Pig CassandraStorage (CASSANDRA-3042)
  * fix CQL2 ALTER TABLE compaction_strategy_class altering (CASSANDRA-4965)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 7e4355a..9cb4c66 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -206,10 +206,17 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
         }
     }
 
-    public void setCompactionStrategyClass(String compactionStrategyClass) throws ConfigurationException
+    public void setCompactionStrategyClass(String compactionStrategyClass)
     {
-        metadata.compactionStrategyClass = CFMetaData.createCompactionStrategy(compactionStrategyClass);
-        maybeReloadCompactionStrategy();
+        try
+        {
+            metadata.compactionStrategyClass = CFMetaData.createCompactionStrategy(compactionStrategyClass);
+            maybeReloadCompactionStrategy();
+        }
+        catch (ConfigurationException e)
+        {
+            throw new IllegalArgumentException(e.getMessage());
+        }
     }
 
     public String getCompactionStrategyClass()
@@ -222,9 +229,16 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
         return metadata.compressionParameters().asThriftOptions();
     }
 
-    public void setCompressionParameters(Map<String,String> opts) throws ConfigurationException
+    public void setCompressionParameters(Map<String,String> opts)
     {
-        metadata.compressionParameters = CompressionParameters.create(opts);
+        try
+        {
+            metadata.compressionParameters = CompressionParameters.create(opts);
+        }
+        catch (ConfigurationException e)
+        {
+            throw new IllegalArgumentException(e.getMessage());
+        }
     }
 
     private ColumnFamilyStore(Table table,

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
index 39ed703..3388b9b 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
@@ -21,8 +21,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
 
-import org.apache.cassandra.exceptions.ConfigurationException;
-
 /**
  * The MBean interface for ColumnFamilyStore
  */
@@ -260,7 +258,7 @@ public interface ColumnFamilyStoreMBean
      * Sets the compaction strategy by class name
      * @param className the name of the compaction strategy class
      */
-    public void setCompactionStrategyClass(String className) throws ConfigurationException;
+    public void setCompactionStrategyClass(String className);
 
     /**
      * Gets the compaction strategy class name
@@ -276,7 +274,7 @@ public interface ColumnFamilyStoreMBean
      * Set the compression parameters
      * @param opts map of string names to values
      */
-    public void setCompressionParameters(Map<String,String> opts) throws ConfigurationException;
+    public void setCompressionParameters(Map<String,String> opts);
 
     /**
      * Disable automatic compaction.

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/src/java/org/apache/cassandra/service/PBSPredictor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/PBSPredictor.java b/src/java/org/apache/cassandra/service/PBSPredictor.java
index f4f3353..64d19de 100644
--- a/src/java/org/apache/cassandra/service/PBSPredictor.java
+++ b/src/java/org/apache/cassandra/service/PBSPredictor.java
@@ -26,8 +26,6 @@ import java.util.concurrent.LinkedBlockingQueue;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
-import org.apache.cassandra.thrift.InvalidRequestException;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -313,7 +311,7 @@ public class PBSPredictor implements PBSPredictorMBean
                                             int w,
                                             float timeSinceWrite,
                                             int numberVersionsStale,
-                                            float percentileLatency) throws Exception
+                                            float percentileLatency)
     {
         if (r > n)
             throw new IllegalArgumentException("r must be less than n");
@@ -329,7 +327,7 @@ public class PBSPredictor implements PBSPredictorMBean
             throw new IllegalArgumentException("numberVersionsStale must be positive");
 
         if (!logLatencies)
-            throw new InvalidRequestException("Latency logging is not enabled");
+            throw new IllegalStateException("Latency logging is not enabled");
 
         // get a mapping of {replica number : latency} for each of WARS
         Map<Integer, List<Long>> wLatencies = getOrderedWLatencies();
@@ -338,10 +336,10 @@ public class PBSPredictor implements PBSPredictorMBean
         Map<Integer, List<Long>> sLatencies = getOrderedSLatencies();
 
         if (wLatencies.isEmpty() || aLatencies.isEmpty())
-            throw new InvalidRequestException("No write latencies have been recorded so far. Run some (non-local) inserts.");
+            throw new IllegalStateException("No write latencies have been recorded so far. Run some (non-local) inserts.");
 
         if (rLatencies.isEmpty() || sLatencies.isEmpty())
-            throw new InvalidRequestException("No read latencies have been recorded so far. Run some (non-local) reads.");
+            throw new IllegalStateException("No read latencies have been recorded so far. Run some (non-local) reads.");
 
         // storage for simulated read and write latencies
         ArrayList<Long> readLatencies = new ArrayList<Long>();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/src/java/org/apache/cassandra/service/PBSPredictorMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/PBSPredictorMBean.java b/src/java/org/apache/cassandra/service/PBSPredictorMBean.java
index 8c7773d..1e2f31a 100644
--- a/src/java/org/apache/cassandra/service/PBSPredictorMBean.java
+++ b/src/java/org/apache/cassandra/service/PBSPredictorMBean.java
@@ -25,7 +25,7 @@ public interface PBSPredictorMBean
                                             int w,
                                             float timeSinceWrite, 
                                             int numberVersionsStale,
-                                            float percentileLatency) throws Exception;
+                                            float percentileLatency);
 
     public void enableConsistencyPredictionLogging();
     public void disableConsistencyPredictionLogging();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 567d829..4bf6ba7 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -51,6 +51,7 @@ import org.apache.cassandra.dht.*;
 import org.apache.cassandra.dht.Range;
 import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.exceptions.UnavailableException;
 import org.apache.cassandra.gms.*;
 import org.apache.cassandra.io.sstable.SSTableDeletingTask;
 import org.apache.cassandra.io.sstable.SSTableLoader;
@@ -752,12 +753,19 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
         Gossiper.instance.addLocalApplicationState(ApplicationState.RACK, StorageService.instance.valueFactory.rack(rack));
     }
 
-    public synchronized void joinRing() throws IOException, ConfigurationException
+    public synchronized void joinRing() throws IOException
     {
         if (!joined)
         {
             logger.info("Joining ring by operator request");
-            joinTokenRing(0);
+            try
+            {
+                joinTokenRing(0);
+            }
+            catch (ConfigurationException e)
+            {
+                throw new IOException(e.getMessage());
+            }
         }
         else if (isSurveyMode)
         {
@@ -984,12 +992,18 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
      * @param keyspace The keyspace to fetch information about
      *
      * @return a List of TokenRange(s) converted to String for the given keyspace
-     *
-     * @throws InvalidRequestException if there is no ring information available about keyspace
      */
-    public List<String> describeRingJMX(String keyspace) throws InvalidRequestException
+    public List<String> describeRingJMX(String keyspace) throws IOException
     {
-        List<TokenRange> tokenRanges = describeRing(keyspace);
+        List<TokenRange> tokenRanges = null;
+        try
+        {
+            tokenRanges = describeRing(keyspace);
+        }
+        catch (InvalidRequestException e)
+        {
+            throw new IOException(e.getMessage());
+        }
         List<String> result = new ArrayList<String>(tokenRanges.size());
 
         for (TokenRange tokenRange : tokenRanges)
@@ -2641,9 +2655,16 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
         onFinish.run();
     }
 
-    public void move(String newToken) throws IOException, InterruptedException, ConfigurationException
+    public void move(String newToken) throws IOException
     {
-        getPartitioner().getTokenFactory().validate(newToken);
+        try
+        {
+            getPartitioner().getTokenFactory().validate(newToken);
+        }
+        catch (ConfigurationException e)
+        {
+            throw new IOException(e.getMessage());
+        }
         move(getPartitioner().getTokenFactory().fromString(newToken));
     }
 
@@ -2830,13 +2851,20 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
         }
     }
 
-    public void relocate(Collection<String> srcTokens) throws ConfigurationException
+    public void relocate(Collection<String> srcTokens) throws IOException
     {
         List<Token> tokens = new ArrayList<Token>(srcTokens.size());
-        for (String srcT : srcTokens)
+        try
+        {
+            for (String srcT : srcTokens)
+            {
+                getPartitioner().getTokenFactory().validate(srcT);
+                tokens.add(getPartitioner().getTokenFactory().fromString(srcT));
+            }
+        }
+        catch (ConfigurationException e)
         {
-            getPartitioner().getTokenFactory().validate(srcT);
-            tokens.add(getPartitioner().getTokenFactory().fromString(srcT));
+            throw new IOException(e.getMessage());
         }
         relocateTokens(tokens);
     }
@@ -3164,10 +3192,16 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
         return old;
     }
 
-    public void truncate(String keyspace, String columnFamily)
-    throws org.apache.cassandra.exceptions.UnavailableException, TimeoutException, IOException
+    public void truncate(String keyspace, String columnFamily) throws TimeoutException, IOException
     {
-        StorageProxy.truncateBlocking(keyspace, columnFamily);
+        try
+        {
+            StorageProxy.truncateBlocking(keyspace, columnFamily);
+        }
+        catch (UnavailableException e)
+        {
+            throw new IOException(e.getMessage());
+        }
     }
 
     public boolean isDcAwareReplicationStrategy(String keyspace)
@@ -3193,14 +3227,14 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
      * on the number of replicas within itself. For DC unaware replication strategies, ownership without replication
      * will be 100%.
      *
-     * @throws ConfigurationException
+     * @throws IllegalStateException when node is not configured properly.
      */
-    public LinkedHashMap<InetAddress, Float> effectiveOwnership(String keyspace) throws ConfigurationException
+    public LinkedHashMap<InetAddress, Float> effectiveOwnership(String keyspace) throws IllegalStateException
     {
         if (Schema.instance.getNonSystemTables().size() <= 0)
-            throw new ConfigurationException("Couldn't find any Non System Keyspaces to infer replication topology");
+            throw new IllegalStateException("Couldn't find any Non System Keyspaces to infer replication topology");
         if (keyspace == null && !hasSameReplication(Schema.instance.getNonSystemTables()))
-            throw new ConfigurationException("Non System keyspaces doesnt have the same topology");
+            throw new IllegalStateException("Non System keyspaces doesnt have the same topology");
 
         TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap();
 
@@ -3259,12 +3293,20 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
         return Collections.unmodifiableList(tableslist);
     }
 
-    public void updateSnitch(String epSnitchClassName, Boolean dynamic, Integer dynamicUpdateInterval, Integer dynamicResetInterval, Double dynamicBadnessThreshold) throws ConfigurationException
+    public void updateSnitch(String epSnitchClassName, Boolean dynamic, Integer dynamicUpdateInterval, Integer dynamicResetInterval, Double dynamicBadnessThreshold) throws ClassNotFoundException
     {
         IEndpointSnitch oldSnitch = DatabaseDescriptor.getEndpointSnitch();
 
         // new snitch registers mbean during construction
-        IEndpointSnitch newSnitch = FBUtilities.construct(epSnitchClassName, "snitch");
+        IEndpointSnitch newSnitch = null;
+        try
+        {
+            newSnitch = FBUtilities.construct(epSnitchClassName, "snitch");
+        }
+        catch (ConfigurationException e)
+        {
+            throw new ClassNotFoundException(e.getMessage());
+        }
         if (dynamic)
         {
             DatabaseDescriptor.setDynamicUpdateInterval(dynamicUpdateInterval);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/src/java/org/apache/cassandra/service/StorageServiceMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
index e51184a..0176b1d 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -27,11 +27,6 @@ import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
 
-import org.apache.cassandra.exceptions.ConfigurationException;
-import org.apache.cassandra.exceptions.InvalidRequestException;
-import org.apache.cassandra.exceptions.UnavailableException;
-
-
 public interface StorageServiceMBean
 {
     /**
@@ -139,10 +134,8 @@ public interface StorageServiceMBean
      * @param keyspace The keyspace to fetch information about
      *
      * @return a List of TokenRange(s) converted to String for the given keyspace
-     *
-     * @throws InvalidRequestException if there is no ring information available about keyspace
      */
-    public List <String> describeRingJMX(String keyspace) throws InvalidRequestException;
+    public List <String> describeRingJMX(String keyspace) throws IOException;
 
     /**
      * Returns the local node's primary range.
@@ -291,13 +284,12 @@ public interface StorageServiceMBean
      * @param newToken token to move this node to.
      * This node will unload its data onto its neighbors, and bootstrap to the new token.
      */
-    public void move(String newToken) throws IOException, InterruptedException, ConfigurationException;
+    public void move(String newToken) throws IOException;
 
     /**
      * @param srcTokens tokens to move to this node
-     * @throws ConfigurationException when passed an invalid token string
      */
-    public void relocate(Collection<String> srcTokens) throws ConfigurationException;
+    public void relocate(Collection<String> srcTokens) throws IOException;
 
     /**
      * removeToken removes token (and all data associated with
@@ -336,10 +328,8 @@ public interface StorageServiceMBean
      *
      * @param keyspace The keyspace to delete from
      * @param columnFamily The column family to delete data from.
-     *
-     * @throws UnavailableException if some of the hosts in the ring are down.
      */
-    public void truncate(String keyspace, String columnFamily) throws UnavailableException, TimeoutException, IOException;
+    public void truncate(String keyspace, String columnFamily)throws TimeoutException, IOException;
 
     /**
      * given a list of tokens (representing the nodes in the cluster), returns
@@ -354,7 +344,7 @@ public interface StorageServiceMBean
      * in the cluster have the same replication strategies and if yes then we will
      * use the first else a empty Map is returned.
      */
-    public Map<InetAddress, Float> effectiveOwnership(String keyspace) throws ConfigurationException;
+    public Map<InetAddress, Float> effectiveOwnership(String keyspace) throws IllegalStateException;
 
     public List<String> getKeyspaces();
 
@@ -365,9 +355,8 @@ public interface StorageServiceMBean
      * @param dynamicUpdateInterval    integer, in ms (default 100)
      * @param dynamicResetInterval     integer, in ms (default 600,000)
      * @param dynamicBadnessThreshold  double, (default 0.0)
-     * @throws ConfigurationException  classname not found on classpath
      */
-    public void updateSnitch(String epSnitchClassName, Boolean dynamic, Integer dynamicUpdateInterval, Integer dynamicResetInterval, Double dynamicBadnessThreshold) throws ConfigurationException;
+    public void updateSnitch(String epSnitchClassName, Boolean dynamic, Integer dynamicUpdateInterval, Integer dynamicResetInterval, Double dynamicBadnessThreshold) throws ClassNotFoundException;
 
     // allows a user to forcibly 'kill' a sick node
     public void stopGossiping();
@@ -392,7 +381,7 @@ public interface StorageServiceMBean
     public boolean isNativeTransportRunning();
 
     // allows a node that have been started without joining the ring to join it
-    public void joinRing() throws IOException, ConfigurationException;
+    public void joinRing() throws IOException;
     public boolean isJoined();
 
     public int getExceptionCount();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/src/java/org/apache/cassandra/tools/NodeCmd.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeCmd.java b/src/java/org/apache/cassandra/tools/NodeCmd.java
index 11a78e2..ecd9e3c 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -216,7 +216,7 @@ public class NodeCmd
             ownerships = probe.effectiveOwnership(keyspace);
             keyspaceSelected = true;
         }
-        catch (ConfigurationException ex)
+        catch (IllegalStateException ex)
         {
             ownerships = probe.getOwnership();
             outs.printf("Note: Ownership information does not include topology; for complete information, specify a keyspace%n");
@@ -434,7 +434,7 @@ public class NodeCmd
                 ownerships = probe.effectiveOwnership(kSpace);
                 hasEffectiveOwns = true;
             }
-            catch (ConfigurationException e)
+            catch (IllegalStateException e)
             {
                 ownerships = probe.getOwnership();
             }
@@ -1236,7 +1236,7 @@ public class NodeCmd
                 out.println("\t" + tokenRangeString);
             }
         }
-        catch (InvalidRequestException e)
+        catch (IOException e)
         {
             err(e, e.getMessage());
         }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c24d019/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java
index 7774122..34a8025 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -37,7 +37,6 @@ import javax.management.remote.JMXServiceURL;
 import com.google.common.collect.Iterables;
 
 import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutorMBean;
-import org.apache.cassandra.exceptions.*;
 import org.apache.cassandra.db.ColumnFamilyStoreMBean;
 import org.apache.cassandra.db.compaction.CompactionManager;
 import org.apache.cassandra.db.compaction.CompactionManagerMBean;
@@ -269,7 +268,7 @@ public class NodeProbe
         return ssProxy.getOwnership();
     }
 
-    public Map<InetAddress, Float> effectiveOwnership(String keyspace) throws ConfigurationException
+    public Map<InetAddress, Float> effectiveOwnership(String keyspace) throws IllegalStateException
     {
         return ssProxy.effectiveOwnership(keyspace);
     }
@@ -395,7 +394,7 @@ public class NodeProbe
         return ssProxy.isJoined();
     }
 
-    public void joinRing() throws IOException, ConfigurationException
+    public void joinRing() throws IOException
     {
         ssProxy.joinRing();
     }
@@ -405,7 +404,7 @@ public class NodeProbe
         ssProxy.decommission();
     }
 
-    public void move(String newToken) throws IOException, InterruptedException, ConfigurationException
+    public void move(String newToken) throws IOException, InterruptedException
     {
         ssProxy.move(newToken);
     }
@@ -523,10 +522,6 @@ public class NodeProbe
         {
             ssProxy.truncate(tableName, cfName);
         }
-        catch (UnavailableException e)
-        {
-            throw new RuntimeException("Error while executing truncate", e);
-        }
         catch (TimeoutException e)
         {
             throw new RuntimeException("Error while executing truncate", e);
@@ -712,7 +707,7 @@ public class NodeProbe
         return ssProxy.getSchemaVersion();
     }
 
-    public List<String> describeRing(String keyspaceName) throws InvalidRequestException
+    public List<String> describeRing(String keyspaceName) throws IOException
     {
         return ssProxy.describeRingJMX(keyspaceName);
     }