You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/01/20 00:09:41 UTC

svn commit: r1061057 - in /cassandra/trunk: ./ interface/thrift/gen-java/org/apache/cassandra/thrift/ src/java/org/apache/cassandra/cli/ src/java/org/apache/cassandra/net/ src/java/org/apache/cassandra/service/ test/unit/org/apache/cassandra/locator/ t...

Author: jbellis
Date: Wed Jan 19 23:09:41 2011
New Revision: 1061057

URL: http://svn.apache.org/viewvc?rev=1061057&view=rev
Log:
merge from 0.7

Modified:
    cassandra/trunk/   (props changed)
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java   (props changed)
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java   (props changed)
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java   (props changed)
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java   (props changed)
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java   (props changed)
    cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java
    cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
    cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
    cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java
    cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java
    cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java
    cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java

Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
 /cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7:1026516-1060938
+/cassandra/branches/cassandra-0.7:1026516-1061050
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3:774578-796573

Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Jan 19 23:09:41 2011
@@ -35,6 +35,7 @@
  * fix writing SSTable column count statistics (CASSANDRA-1976)
  * fix streaming of multiple CFs during bootstrap (CASSANDRA-1992)
  * explicitly set JVM GC new generation size with -Xmn (CASSANDRA-1968)
+ * add short options for CLI flags (CASSANDRA-1565)
 
 
 0.7.0-final

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1061050
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1061050
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1061050
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1061050
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1061050
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198

Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java Wed Jan 19 23:09:41 2011
@@ -24,9 +24,12 @@ import org.apache.commons.cli.*;
  * Used to process, and act upon the arguments passed to the CLI.
  *
  */
-public class CliOptions {
+public class CliOptions
+{
+    private static CLIOptions options = null; // Info about command line options
 
-    private static Options options = null; // Info about command line options
+    // Name of the command line tool (used for error messages)
+    private static final String TOOL_NAME = "cassandra-cli";
 
     // Command line options
     private static final String HOST_OPTION = "host";
@@ -48,48 +51,46 @@ public class CliOptions {
     // whether they take an extra argument, etc.
     static
     {
-        options = new Options();
-        options.addOption(HOST_OPTION, true, "cassandra server's host name");
-        options.addOption(PORT_OPTION, true, "cassandra server's thrift port");  
-        options.addOption(UNFRAME_OPTION, false, "cassandra server's framed transport");
-        options.addOption(DEBUG_OPTION, false, "display stack traces");  
-        options.addOption(USERNAME_OPTION, true, "username for cassandra authentication");
-        options.addOption(PASSWORD_OPTION, true, "password for cassandra authentication");
-        options.addOption(KEYSPACE_OPTION, true, "cassandra keyspace user is authenticated against");
-        options.addOption(BATCH_OPTION, false, "enabled batch mode (supress output; errors are fatal)");
-        options.addOption(FILE_OPTION, true, "load statements from the specific file.");
-        options.addOption(JMX_PORT_OPTION, true, "JMX service port.");
-        options.addOption(HELP_OPTION, false, "usage help.");
+        options = new CLIOptions();
+
+        options.addOption("h",  HOST_OPTION,     "HOSTNAME", "cassandra server's host name");
+        options.addOption("p",  PORT_OPTION,     "PORT",     "cassandra server's thrift port");
+        options.addOption("u",  USERNAME_OPTION, "USERNAME", "user name for cassandra authentication");
+        options.addOption("pw", PASSWORD_OPTION, "PASSWORD", "password for cassandra authentication");
+        options.addOption("k",  KEYSPACE_OPTION, "KEYSPACE", "cassandra keyspace user is authenticated against");
+        options.addOption("f",  FILE_OPTION,     "FILENAME", "load statements from the specific file.");
+        options.addOption(null, JMX_PORT_OPTION, "JMX-PORT", "JMX service port");
+
+        // options without argument
+        options.addOption("B",  BATCH_OPTION,   "enabled batch mode (suppress output; errors are fatal)");
+        options.addOption(null, UNFRAME_OPTION, "use cassandra server's unframed transport");
+        options.addOption(null, DEBUG_OPTION,   "display stack traces");
+        options.addOption("?",  HELP_OPTION,    "usage help.");
     }
 
     private static void printUsage()
     {
-        System.err.println("Usage: cassandra-cli --host hostname [--port <port>] [--jmxport <port>] [--file <filename>] [--unframed] [--debug]");
-        System.err.println("\t[--username username] [--password password] [--keyspace keyspace] [--batch] [--help]");
+        new HelpFormatter().printHelp(TOOL_NAME, options);
     }
 
     public void processArgs(CliSessionState css, String[] args)
     {
-        CommandLineParser parser = new PosixParser();
+        CommandLineParser parser = new GnuParser();
+
         try
         {
-            CommandLine cmd = parser.parse(options, args);
-            
-            if (!cmd.hasOption(HOST_OPTION))
+            CommandLine cmd = parser.parse(options, args, false);
+
+            if (cmd.hasOption(HOST_OPTION))
+            {
+                css.hostName = cmd.getOptionValue(HOST_OPTION);
+            }
+            else
             {
                 // host name not specified in command line.
                 // In this case, we don't implicitly connect at CLI startup. In this case,
                 // the user must use the "connect" CLI statement to connect.
-                //
                 css.hostName = null;
-                
-                // HelpFormatter formatter = new HelpFormatter();
-                // formatter.printHelp("java com.facebook.infrastructure.cli.CliMain ", options);
-                // System.exit(1);
-            }
-            else 
-            {
-                css.hostName = cmd.getOptionValue(HOST_OPTION);
             }
 
             // Look to see if frame has been specified
@@ -113,23 +114,24 @@ public class CliOptions {
             {
                 css.thriftPort = DEFAULT_THRIFT_PORT;
             }
-         
+
             // Look for authentication credentials (username and password)
-            if (cmd.hasOption(USERNAME_OPTION)) 
+            if (cmd.hasOption(USERNAME_OPTION))
             {
             	css.username = cmd.getOptionValue(USERNAME_OPTION);
             }
+
             if (cmd.hasOption(PASSWORD_OPTION))
             {
             	css.password = cmd.getOptionValue(PASSWORD_OPTION);
             }
-            
+
             // Look for keyspace
-            if (cmd.hasOption(KEYSPACE_OPTION)) 
+            if (cmd.hasOption(KEYSPACE_OPTION))
             {
             	css.keyspace = cmd.getOptionValue(KEYSPACE_OPTION);
             }
-            
+
             if (cmd.hasOption(BATCH_OPTION))
             {
                 css.batch = true;
@@ -150,12 +152,54 @@ public class CliOptions {
                 printUsage();
                 System.exit(1);
             }
+
+            // Abort if there are any unrecognized arguments left
+            if (cmd.getArgs().length > 0)
+            {
+                System.err.printf("Unknown argument: %s\n", cmd.getArgs()[0]);
+                System.err.println();
+                printUsage();
+                System.exit(1);
+            }
         }
         catch (ParseException e)
         {
+            System.err.println(e.getMessage());
+            System.err.println();
             printUsage();
-            System.err.println("\n" + e.getMessage());
             System.exit(1);
         }
     }
+
+    private static class CLIOptions extends Options
+    {
+        /**
+         * Add option with argument and argument name
+         * @param opt shortcut for option name
+         * @param longOpt complete option name
+         * @param argName argument name
+         * @param description description of the option
+         * @return updated Options object
+         */
+        public Options addOption(String opt, String longOpt, String argName, String description)
+        {
+            Option option = new Option(opt, longOpt, true, description);
+            option.setArgName(argName);
+
+            return addOption(option);
+        }
+
+        /**
+         * Add option without argument
+         * @param opt shortcut for option name
+         * @param longOpt complete option name
+         * @param description description of the option
+         * @return updated Options object
+         */
+        public Options addOption(String opt, String longOpt, String description)
+        {
+            return addOption(new Option(opt, longOpt, false, description));
+        }
+    }
+
 }

Modified: cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java Wed Jan 19 23:09:41 2011
@@ -21,10 +21,7 @@ package org.apache.cassandra.net;
 import java.io.IOError;
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
+import java.net.*;
 import java.nio.ByteBuffer;
 import java.nio.channels.AsynchronousCloseException;
 import java.nio.channels.ServerSocketChannel;
@@ -45,6 +42,7 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
 import org.apache.cassandra.concurrent.StageManager;
+import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.config.EncryptionOptions;
 import org.apache.cassandra.io.util.DataOutputBuffer;
@@ -177,14 +175,14 @@ public final class MessagingService impl
      * Listen on the specified port.
      * @param localEp InetAddress whose port to listen on.
      */
-    public void listen(InetAddress localEp) throws IOException
+    public void listen(InetAddress localEp) throws IOException, ConfigurationException
     {
         socketThread = new SocketThread(getServerSocket(localEp), "ACCEPT-" + localEp);
         socketThread.start();
         listenGate.signalAll();
     }
 
-    private ServerSocket getServerSocket(InetAddress localEp) throws IOException
+    private ServerSocket getServerSocket(InetAddress localEp) throws IOException, ConfigurationException
     {
         final ServerSocket ss;
         if (DatabaseDescriptor.getEncryptionOptions().internode_encryption == EncryptionOptions.InternodeEncryption.all)
@@ -198,7 +196,20 @@ public final class MessagingService impl
             ServerSocketChannel serverChannel = ServerSocketChannel.open();
             ss = serverChannel.socket();
             ss.setReuseAddress(true);
-            ss.bind(new InetSocketAddress(localEp, DatabaseDescriptor.getStoragePort()));
+            InetSocketAddress address = new InetSocketAddress(localEp, DatabaseDescriptor.getStoragePort());
+            try
+            {
+                ss.bind(address);
+            }
+            catch (BindException e)
+            {
+                if (e.getMessage().contains("in use"))
+                    throw new ConfigurationException(address + " is in use by another process.  Change listen_address:storage_port in cassandra.yaml to values that do not conflict with other services");
+                else if (e.getMessage().contains("Cannot assign requested address"))
+                    throw new ConfigurationException("Unable to bind to address " + address + ". Set listen_address in cassandra.yaml to an interface you can bind to, e.g., your private IP address on EC2");
+                else
+                    throw e;
+            }
             logger_.info("Starting Messaging Service on port {}", DatabaseDescriptor.getStoragePort());
         }
         return ss;

Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Wed Jan 19 23:09:41 2011
@@ -285,7 +285,7 @@ public class StorageService implements I
         return initialized; 
     }
 
-    public synchronized void initClient() throws IOException
+    public synchronized void initClient() throws IOException, ConfigurationException
     {
         if (initialized)
         {

Modified: cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java Wed Jan 19 23:09:41 2011
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.net.InetAddress;
 import java.util.ArrayList;
 
+import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.service.StorageService;
 import org.junit.Test;
 
@@ -31,7 +32,7 @@ import org.apache.cassandra.utils.FBUtil
 public class DynamicEndpointSnitchTest
 {
     @Test
-    public void testSnitch() throws InterruptedException, IOException
+    public void testSnitch() throws InterruptedException, IOException, ConfigurationException
     {
         // do this because SS needs to be initialized before DES can work properly.
         StorageService.instance.initClient();

Modified: cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java Wed Jan 19 23:09:41 2011
@@ -4,6 +4,8 @@ import org.junit.Test;
 
 import java.io.IOException;
 
+import org.apache.cassandra.config.ConfigurationException;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -26,12 +28,8 @@ import java.io.IOException;
 public class InitClientTest // extends CleanupHelper
 {
     @Test
-    public void testInitClientStartup()
+    public void testInitClientStartup() throws IOException, ConfigurationException
     {
-        try {
-            StorageService.instance.initClient();
-        } catch (IOException ex) {
-            throw new AssertionError(ex.getMessage());
-        }
+        StorageService.instance.initClient();
     }
 }

Modified: cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java Wed Jan 19 23:09:41 2011
@@ -32,6 +32,7 @@ import org.junit.Test;
 import org.apache.cassandra.CleanupHelper;
 import org.apache.cassandra.Util;
 import org.apache.cassandra.concurrent.Stage;
+import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.dht.IPartitioner;
 import org.apache.cassandra.dht.RandomPartitioner;
 import org.apache.cassandra.dht.Token;
@@ -58,7 +59,7 @@ public class RemoveTest extends CleanupH
     List<InetAddress> hosts;
 
     @Before
-    public void setup() throws IOException
+    public void setup() throws IOException, ConfigurationException
     {
         tmd.clearUnsafe();
         IPartitioner partitioner = new RandomPartitioner();

Modified: cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java Wed Jan 19 23:09:41 2011
@@ -20,6 +20,7 @@
 package org.apache.cassandra.service;
 
 import org.apache.cassandra.CleanupHelper;
+import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.junit.Test;
 import static org.junit.Assert.assertTrue;
@@ -31,7 +32,7 @@ import java.io.IOException;
 public class StorageServiceClientTest
 {
     @Test
-    public void testClientOnlyMode() throws IOException
+    public void testClientOnlyMode() throws IOException, ConfigurationException
     {
         CleanupHelper.mkdirs();
         CleanupHelper.cleanup();