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