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/31 16:40:48 UTC

svn commit: r1065654 - in /cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra: config/DatabaseDescriptor.java service/AbstractCassandraDaemon.java service/StorageService.java

Author: jbellis
Date: Mon Jan 31 15:40:48 2011
New Revision: 1065654

URL: http://svn.apache.org/viewvc?rev=1065654&view=rev
Log:
more informative error messages for configuration problems
patch by jbellis

Modified:
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=1065654&r1=1065653&r2=1065654&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/DatabaseDescriptor.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/DatabaseDescriptor.java Mon Jan 31 15:40:48 2011
@@ -120,8 +120,17 @@ public class    DatabaseDescriptor
         {
             URL url = getStorageConfigURL();
             logger.info("Loading settings from " + url);
-            
-            InputStream input = url.openStream();
+
+            InputStream input = null;
+            try
+            {
+                input = url.openStream();
+            }
+            catch (IOException e)
+            {
+                // getStorageConfigURL should have ruled this out
+                throw new AssertionError(e);
+            }
             org.yaml.snakeyaml.constructor.Constructor constructor = new org.yaml.snakeyaml.constructor.Constructor(Config.class);
             TypeDescription desc = new TypeDescription(Config.class);
             desc.putListPropertyType("keyspaces", RawKeyspace.class);
@@ -253,7 +262,16 @@ public class    DatabaseDescriptor
             
             /* Local IP or hostname to bind RPC server to */
             if (conf.rpc_address != null)
-                rpcAddress = InetAddress.getByName(conf.rpc_address);
+            {
+                try
+                {
+                    rpcAddress = InetAddress.getByName(conf.rpc_address);
+                }
+                catch (UnknownHostException e)
+                {
+                    throw new ConfigurationException("Unknown host in rpc_address " + conf.rpc_address);
+                }
+            }
 
             if (conf.thrift_framed_transport_size_in_mb > 0 && conf.thrift_max_message_length_in_mb < conf.thrift_framed_transport_size_in_mb)
             {
@@ -291,6 +309,10 @@ public class    DatabaseDescriptor
                 {
                     throw new ConfigurationException("Invalid Request Scheduler class " + conf.request_scheduler);
                 }
+                catch (Exception e)
+                {
+                    throw new ConfigurationException("Unable to instantiate request scheduler", e);
+                }
             }
             else
             {
@@ -369,31 +391,28 @@ public class    DatabaseDescriptor
             }
             for (String seedString : conf.seeds)
             {
-                seeds.add(InetAddress.getByName(seedString));
+                try
+                {
+                    seeds.add(InetAddress.getByName(seedString));
+                }
+                catch (UnknownHostException e)
+                {
+                    throw new ConfigurationException("Unknown seed " + seedString + ".  Consider using IP addresses instead of host names");
+                }
             }
         }
-        catch (UnknownHostException e)
-        {
-            logger.error("Fatal configuration error ", e);
-            System.err.println("Unable to start with unknown hosts configured.  Use IP addresses instead of hostnames.");
-            System.exit(2);
-        }
         catch (ConfigurationException e)
         {
             logger.error("Fatal configuration error", e);
-            System.err.println("Bad configuration; unable to start server");
+            System.err.println(e.getMessage() + "\nFatal configuration error; unable to start server.  See log for stacktrace.");
             System.exit(1);
         }
         catch (YAMLException e)
         {
             logger.error("Fatal configuration error error", e);
-            System.err.println("Bad configuration; unable to start server");
+            System.err.println(e.getMessage() + "\nInvalid yaml; unable to start server.  See log for stacktrace.");
             System.exit(1);
         }
-        catch (Exception e)
-        {
-            throw new RuntimeException(e);
-        }
     }
 
     private static IEndpointSnitch createEndpointSnitch(String endpointSnitchClassName) throws ConfigurationException

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java?rev=1065654&r1=1065653&r2=1065654&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java Mon Jan 31 15:40:48 2011
@@ -190,8 +190,8 @@ public abstract class AbstractCassandraD
         }
         catch (ConfigurationException e)
         {
-            logger.error("Fatal error: " + e.getMessage());
-            System.err.println("Bad configuration; unable to start server");
+            logger.error("Fatal configuration error", e);
+            System.err.println(e.getMessage() + "\nFatal configuration error; unable to start server.  See log for stacktrace.");
             System.exit(1);
         }
 
@@ -214,8 +214,7 @@ public abstract class AbstractCassandraD
     
     /**
      * Start the Cassandra Daemon, assuming that it has already been
-     * initialized, via either {@link #init(String[])} or
-     * {@link #load(String[])}.
+     * initialized via {@link #init(String[])}
      *
      * Hook for JSVC
      *

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java?rev=1065654&r1=1065653&r2=1065654&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java Mon Jan 31 15:40:48 2011
@@ -149,6 +149,9 @@ public class StorageService implements I
 
     public static final RetryingScheduledThreadPoolExecutor scheduledTasks = new RetryingScheduledThreadPoolExecutor("ScheduledTasks");
 
+    /* This abstraction maintains the token/endpoint metadata information */
+    private TokenMetadata tokenMetadata_ = new TokenMetadata();
+
     private static IPartitioner partitioner_ = DatabaseDescriptor.getPartitioner();
     public static VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner_);
     
@@ -168,9 +171,6 @@ public class StorageService implements I
         return getPrimaryRangeForEndpoint(FBUtilities.getLocalAddress());
     }
 
-    /* This abstraction maintains the token/endpoint metadata information */
-    private TokenMetadata tokenMetadata_ = new TokenMetadata();
-
     private Set<InetAddress> replicatingNodes = Collections.synchronizedSet(new HashSet<InetAddress>());
     private CassandraDaemon daemon;