Author: slebresne
Date: Thu Apr 21 13:25:36 2011
New Revision: 1095696

URL: http://svn.apache.org/viewvc?rev=1095696&view=rev
Log:
Fix updating column metadata validation class
patch by jbellis; reviewed by slebresne for CASSANDRA-2512

Modified:
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/ColumnDefinition.java
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
    
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java?rev=1095696&r1=1095695&r2=1095696&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/CFMetaData.java
 Thu Apr 21 13:25:36 2011
@@ -582,7 +582,7 @@ public final class CFMetaData
         AbstractType validator = defaultValidator;
         ColumnDefinition columnDefinition = column_metadata.get(column);
         if (columnDefinition != null)
-            validator = columnDefinition.validator;
+            validator = columnDefinition.getValidator();
         return validator;
     }
     
@@ -684,10 +684,12 @@ public final class CFMetaData
         // update the ones staying
         for (org.apache.cassandra.avro.ColumnDef def : cf_def.column_metadata)
         {
-            if (!column_metadata.containsKey(def.name))
+            ColumnDefinition oldDef = column_metadata.get(def.name);
+            if (oldDef == null)
                 continue;
-            column_metadata.get(def.name).setIndexType(def.index_type == null 
? null : org.apache.cassandra.thrift.IndexType.valueOf(def.index_type.name()));
-            column_metadata.get(def.name).setIndexName(def.index_name == null 
? null : def.index_name.toString());
+            
oldDef.setValidator(DatabaseDescriptor.getComparator(def.validation_class));
+            oldDef.setIndexType(def.index_type == null ? null : 
org.apache.cassandra.thrift.IndexType.valueOf(def.index_type.name()));
+            oldDef.setIndexName(def.index_name == null ? null : 
def.index_name.toString());
         }
         // add the new ones coming in.
         for (org.apache.cassandra.avro.ColumnDef def : toAdd)
@@ -732,7 +734,7 @@ public final class CFMetaData
             tcd.setIndex_name(cd.getIndexName());
             tcd.setIndex_type(cd.getIndexType());
             tcd.setName(cd.name);
-            tcd.setValidation_class(cd.validator.getClass().getName());
+            tcd.setValidation_class(cd.getValidator().getClass().getName());
             column_meta.add(tcd);
         }
         def.setColumn_metadata(column_meta);
@@ -773,7 +775,7 @@ public final class CFMetaData
             tcd.index_name = cd.getIndexName();
             tcd.index_type = cd.getIndexType() == null ? null : 
org.apache.cassandra.avro.IndexType.valueOf(cd.getIndexType().name());
             tcd.name = ByteBufferUtil.clone(cd.name);
-            tcd.validation_class = cd.validator.getClass().getName();
+            tcd.validation_class = cd.getValidator().getClass().getName();
             column_meta.add(tcd);
         }
         def.column_metadata = column_meta;   

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/ColumnDefinition.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/ColumnDefinition.java?rev=1095696&r1=1095695&r2=1095696&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/ColumnDefinition.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/config/ColumnDefinition.java
 Thu Apr 21 13:25:36 2011
@@ -36,7 +36,7 @@ import org.apache.cassandra.utils.ByteBu
 public class ColumnDefinition
 {
     public final ByteBuffer name;
-    public final AbstractType validator;
+    private AbstractType validator;
     private IndexType index_type;
     private String index_name;
 
@@ -180,4 +180,14 @@ public class ColumnDefinition
     {
         this.index_type = index_type;
     }
+
+    public AbstractType getValidator()
+    {
+        return validator;
+    }
+
+    public void setValidator(AbstractType validator)
+    {
+        this.validator = validator;
+    }
 }

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1095696&r1=1095695&r2=1095696&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
 Thu Apr 21 13:25:36 2011
@@ -327,7 +327,7 @@ public class ColumnFamilyStore implement
         final CFMetaData indexedCfMetadata = 
CFMetaData.newIndexMetadata(metadata, info, columnComparator);
         ColumnFamilyStore indexedCfs = 
ColumnFamilyStore.createColumnFamilyStore(table,
                                                                                
  indexedCfMetadata.cfName,
-                                                                               
  new LocalPartitioner(metadata.getColumn_metadata().get(info.name).validator),
+                                                                               
  new 
LocalPartitioner(metadata.getColumn_metadata().get(info.name).getValidator()),
                                                                                
  indexedCfMetadata);
 
         // link in indexedColumns.  this means that writes will add new data 
to the index immediately,

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=1095696&r1=1095695&r2=1095696&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
 Thu Apr 21 13:25:36 2011
@@ -29,9 +29,7 @@ import java.util.concurrent.*;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
-import com.google.common.base.Charsets;
 import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
 
 import org.apache.cassandra.db.commitlog.CommitLog;
@@ -2079,7 +2077,7 @@ public class StorageService implements I
                     rcd.index_name = cd.getIndexName();
                     rcd.index_type = cd.getIndexType();
                     rcd.name = ByteBufferUtil.string(cd.name);
-                    rcd.validator_class = cd.validator.getClass().getName();
+                    rcd.validator_class = 
cd.getValidator().getClass().getName();
                     rcf.column_metadata[j++] = rcd;
                 }
                 if (j == 0)

Modified: 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java?rev=1095696&r1=1095695&r2=1095696&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
 Thu Apr 21 13:25:36 2011
@@ -343,7 +343,7 @@ public class ColumnFamilyStoreTest exten
 
         ColumnFamilyStore cfs = table.getColumnFamilyStore("Indexed2");
         ColumnDefinition old = 
cfs.metadata.getColumn_metadata().get(ByteBufferUtil.bytes("birthdate"));
-        ColumnDefinition cd = new ColumnDefinition(old.name, 
old.validator.getClass().getName(), IndexType.KEYS, "birthdate_index");
+        ColumnDefinition cd = new ColumnDefinition(old.name, 
old.getValidator().getClass().getName(), IndexType.KEYS, "birthdate_index");
         Future<?> future = cfs.addIndex(cd);
         future.get();
         // we had a bug (CASSANDRA-2244) where index would get created but not 
flushed -- check for that


Reply via email to