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/07/01 18:51:37 UTC

svn commit: r959722 - in /cassandra/trunk/src/java/org/apache/cassandra: config/DatabaseDescriptor.java db/DefsTable.java

Author: gdusbabek
Date: Thu Jul  1 16:51:37 2010
New Revision: 959722

URL: http://svn.apache.org/viewvc?rev=959722&view=rev
Log:
handle schema loading when a node has had all keyspaces dropped. Patch by gdusbabek, reviewed by jbellis. CASSANDRA-1203.

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
    cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java

Modified: cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=959722&r1=959721&r2=959722&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java Thu Jul  1 16:51:37 2010
@@ -438,8 +438,15 @@ public class DatabaseDescriptor
                 Table.open(def.name);
             }
             
-            // since we loaded definitions from local storage, log a warning if definitions exist in yaml.
+            // happens when someone manually deletes all tables and restarts.
+            if (tableDefs.size() == 0)
+            {
+                logger.warn("No schema definitions were found in local storage.");
+                // set defsVersion so that migrations leading up to emptiness aren't replayed.
+                defsVersion = uuid;
+            }
             
+            // since we loaded definitions from local storage, log a warning if definitions exist in yaml.
             if (conf.keyspaces != null && conf.keyspaces.size() > 0)
                 logger.warn("Schema definitions were defined both locally and in " + STORAGE_CONF_FILE +
                     ". Definitions in " + STORAGE_CONF_FILE + " were ignored.");

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java?rev=959722&r1=959721&r2=959722&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java Thu Jul  1 16:51:37 2010
@@ -72,6 +72,9 @@ public class DefsTable
         Collection<KSMetaData> tables = new ArrayList<KSMetaData>();
         for (IColumn col : cf.getSortedColumns())
         {
+            //  don't allow deleted columns.
+            if (col instanceof DeletedColumn)
+                continue;
             KSMetaData ks = KSMetaData.deserialize(new ByteArrayInputStream(col.value()));
             tables.add(ks);
         }