You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by gd...@apache.org on 2010/08/12 23:28:40 UTC

svn commit: r984986 - in /cassandra/branches/cassandra-0.6: CHANGES.txt src/java/org/apache/cassandra/config/DatabaseDescriptor.java

Author: gdusbabek
Date: Thu Aug 12 21:28:40 2010
New Revision: 984986

URL: http://svn.apache.org/viewvc?rev=984986&view=rev
Log:
disallow a wider range of invalid keyspace and column family names. patch by gdusbabek, reviewed by jbellis. CASSANDRA-1377

Modified:
    cassandra/branches/cassandra-0.6/CHANGES.txt
    cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java

Modified: cassandra/branches/cassandra-0.6/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/CHANGES.txt?rev=984986&r1=984985&r2=984986&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.6/CHANGES.txt Thu Aug 12 21:28:40 2010
@@ -7,6 +7,8 @@
  * remove String.trim() call on row keys in batch mutations (CASSANDRA-1235)
  * Log summary of dropped messages instead of spamming log (CASSANDRA-1284)
  * Dynamic snitch (CASSANDRA-981)
+ * Use a regex to filter keyspace and column family names during
+   initialization (CASSANDRA-1377)
 
 
 0.6.4

Modified: cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=984986&r1=984985&r2=984986&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java (original)
+++ cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/config/DatabaseDescriptor.java Thu Aug 12 21:28:40 2010
@@ -590,6 +590,8 @@ public class DatabaseDescriptor
                 {
                     throw new ConfigurationException("'system' is a reserved table name for Cassandra internals");
                 }
+                if (!ksName.matches("\\w+"))
+                    throw new ConfigurationException("keyspace name contains invalid char");
 
                 /* See which replica placement strategy to use */
                 String replicaPlacementStrategyClassName = xmlUtils.getNodeValue("/Storage/Keyspaces/Keyspace[@Name='" + ksName + "']/ReplicaPlacementStrategy");
@@ -671,9 +673,9 @@ public class DatabaseDescriptor
                     {
                         throw new ConfigurationException("ColumnFamily name attribute is required");
                     }
-                    if (cfName.contains("-"))
+                    if (!cfName.matches("\\w+"))
                     {
-                        throw new ConfigurationException("ColumnFamily names cannot contain hyphens");
+                        throw new ConfigurationException("ColumnFamily name contains invalid characters.");
                     }
                     String xqlCF = xqlTable + "ColumnFamily[@Name='" + cfName + "']/";