Modified: cassandra/trunk/drivers/txpy/txcql/cassandra/constants.py URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/txpy/txcql/cassandra/constants.py?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/drivers/txpy/txcql/cassandra/constants.py (original) +++ cassandra/trunk/drivers/txpy/txcql/cassandra/constants.py Tue Apr 12 21:08:08 2011 @@ -7,4 +7,4 @@ from thrift.Thrift import * from ttypes import * -VERSION = "20.0.0" +VERSION = "20.1.0"
Modified: cassandra/trunk/drivers/txpy/txcql/cassandra/ttypes.py URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/txpy/txcql/cassandra/ttypes.py?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/drivers/txpy/txcql/cassandra/ttypes.py (original) +++ cassandra/trunk/drivers/txpy/txcql/cassandra/ttypes.py Tue Apr 12 21:08:08 2011 @@ -2324,6 +2324,7 @@ class CfDef: - merge_shards_chance - key_validation_class - row_cache_provider + - key_alias """ thrift_spec = ( @@ -2355,9 +2356,10 @@ class CfDef: (25, TType.DOUBLE, 'merge_shards_chance', None, None, ), # 25 (26, TType.STRING, 'key_validation_class', None, None, ), # 26 (27, TType.STRING, 'row_cache_provider', None, "org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider", ), # 27 + (28, TType.STRING, 'key_alias', None, None, ), # 28 ) - def __init__(self, keyspace=None, name=None, column_type=thrift_spec[3][4], comparator_type=thrift_spec[5][4], subcomparator_type=None, comment=None, row_cache_size=thrift_spec[9][4], key_cache_size=thrift_spec[11][4], read_repair_chance=thrift_spec[12][4], column_metadata=None, gc_grace_seconds=None, default_validation_class=None, id=None, min_compaction_threshold=None, max_compaction_threshold=None, row_cache_save_period_in_seconds=None, key_cache_save_period_in_seconds=None, memtable_flush_after_mins=None, memtable_throughput_in_mb=None, memtable_operations_in_millions=None, replicate_on_write=None, merge_shards_chance=None, key_validation_class=None, row_cache_provider=thrift_spec[27][4],): + def __init__(self, keyspace=None, name=None, column_type=thrift_spec[3][4], comparator_type=thrift_spec[5][4], subcomparator_type=None, comment=None, row_cache_size=thrift_spec[9][4], key_cache_size=thrift_spec[11][4], read_repair_chance=thrift_spec[12][4], column_metadata=None, gc_grace_seconds=None, default_validation_class=None, id=None, min_compaction_threshold=None, max_compaction_threshold=None, row_cache_save_period_in_seconds=None, key_cache_save_period_in_seconds=None, memtable_flush_after_mins=None, memtable_throughput_in_mb=None, memtable_operations_in_millions=None, replicate_on_write=None, merge_shards_chance=None, key_validation_class=None, row_cache_provider=thrift_spec[27][4], key_alias=None,): self.keyspace = keyspace self.name = name self.column_type = column_type @@ -2382,6 +2384,7 @@ class CfDef: self.merge_shards_chance = merge_shards_chance self.key_validation_class = key_validation_class self.row_cache_provider = row_cache_provider + self.key_alias = key_alias def read(self, iprot): if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: @@ -2518,6 +2521,11 @@ class CfDef: self.row_cache_provider = iprot.readString(); else: iprot.skip(ftype) + elif fid == 28: + if ftype == TType.STRING: + self.key_alias = iprot.readString(); + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -2627,6 +2635,10 @@ class CfDef: oprot.writeFieldBegin('row_cache_provider', TType.STRING, 27) oprot.writeString(self.row_cache_provider) oprot.writeFieldEnd() + if self.key_alias != None: + oprot.writeFieldBegin('key_alias', TType.STRING, 28) + oprot.writeString(self.key_alias) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() def validate(self): Modified: cassandra/trunk/interface/cassandra.thrift URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.thrift?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/interface/cassandra.thrift (original) +++ cassandra/trunk/interface/cassandra.thrift Tue Apr 12 21:08:08 2011 @@ -46,7 +46,7 @@ namespace rb CassandraThrift # for every edit that doesn't result in a change to major/minor. # # See the Semantic Versioning Specification (SemVer) http://semver.org. -const string VERSION = "20.0.0" +const string VERSION = "20.1.0" # @@ -394,6 +394,7 @@ struct CfDef { 25: optional double merge_shards_chance, 26: optional string key_validation_class, 27: optional string row_cache_provider="org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider", + 28: optional binary key_alias, } /* describes a keyspace. */ Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Apr 12 21:08:08 2011 @@ -1,7 +1,7 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1090647,1091503,1091542 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1091087,1091503,1091542 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654 -/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1091148,1091508,1091544 +/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090935-1091111,1091113,1091148,1091508,1091544 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-834239,834349-834350 Modified: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java (original) +++ cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java Tue Apr 12 21:08:08 2011 @@ -69,6 +69,7 @@ public class CfDef implements org.apache private static final org.apache.thrift.protocol.TField MERGE_SHARDS_CHANCE_FIELD_DESC = new org.apache.thrift.protocol.TField("merge_shards_chance", org.apache.thrift.protocol.TType.DOUBLE, (short)25); private static final org.apache.thrift.protocol.TField KEY_VALIDATION_CLASS_FIELD_DESC = new org.apache.thrift.protocol.TField("key_validation_class", org.apache.thrift.protocol.TType.STRING, (short)26); private static final org.apache.thrift.protocol.TField ROW_CACHE_PROVIDER_FIELD_DESC = new org.apache.thrift.protocol.TField("row_cache_provider", org.apache.thrift.protocol.TType.STRING, (short)27); + private static final org.apache.thrift.protocol.TField KEY_ALIAS_FIELD_DESC = new org.apache.thrift.protocol.TField("key_alias", org.apache.thrift.protocol.TType.STRING, (short)28); public String keyspace; public String name; @@ -94,6 +95,7 @@ public class CfDef implements org.apache public double merge_shards_chance; public String key_validation_class; public String row_cache_provider; + public ByteBuffer key_alias; /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ public enum _Fields implements org.apache.thrift.TFieldIdEnum { @@ -120,7 +122,8 @@ public class CfDef implements org.apache REPLICATE_ON_WRITE((short)24, "replicate_on_write"), MERGE_SHARDS_CHANCE((short)25, "merge_shards_chance"), KEY_VALIDATION_CLASS((short)26, "key_validation_class"), - ROW_CACHE_PROVIDER((short)27, "row_cache_provider"); + ROW_CACHE_PROVIDER((short)27, "row_cache_provider"), + KEY_ALIAS((short)28, "key_alias"); private static final Map<String, _Fields> byName = new HashMap<String, _Fields>(); @@ -183,6 +186,8 @@ public class CfDef implements org.apache return KEY_VALIDATION_CLASS; case 27: // ROW_CACHE_PROVIDER return ROW_CACHE_PROVIDER; + case 28: // KEY_ALIAS + return KEY_ALIAS; default: return null; } @@ -291,6 +296,8 @@ public class CfDef implements org.apache new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); tmpMap.put(_Fields.ROW_CACHE_PROVIDER, new org.apache.thrift.meta_data.FieldMetaData("row_cache_provider", org.apache.thrift.TFieldRequirementType.OPTIONAL, new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); + tmpMap.put(_Fields.KEY_ALIAS, new org.apache.thrift.meta_data.FieldMetaData("key_alias", org.apache.thrift.TFieldRequirementType.OPTIONAL, + new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING , true))); metaDataMap = Collections.unmodifiableMap(tmpMap); org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(CfDef.class, metaDataMap); } @@ -373,6 +380,10 @@ public class CfDef implements org.apache if (other.isSetRow_cache_provider()) { this.row_cache_provider = other.row_cache_provider; } + if (other.isSetKey_alias()) { + this.key_alias = org.apache.thrift.TBaseHelper.copyBinary(other.key_alias); +; + } } public CfDef deepCopy() { @@ -422,6 +433,7 @@ public class CfDef implements org.apache this.key_validation_class = null; this.row_cache_provider = "org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider"; + this.key_alias = null; } public String getKeyspace() { @@ -1001,6 +1013,40 @@ public class CfDef implements org.apache } } + public byte[] getKey_alias() { + setKey_alias(org.apache.thrift.TBaseHelper.rightSize(key_alias)); + return key_alias == null ? null : key_alias.array(); + } + + public ByteBuffer bufferForKey_alias() { + return key_alias; + } + + public CfDef setKey_alias(byte[] key_alias) { + setKey_alias(key_alias == null ? (ByteBuffer)null : ByteBuffer.wrap(key_alias)); + return this; + } + + public CfDef setKey_alias(ByteBuffer key_alias) { + this.key_alias = key_alias; + return this; + } + + public void unsetKey_alias() { + this.key_alias = null; + } + + /** Returns true if field key_alias is set (has been assigned a value) and false otherwise */ + public boolean isSetKey_alias() { + return this.key_alias != null; + } + + public void setKey_aliasIsSet(boolean value) { + if (!value) { + this.key_alias = null; + } + } + public void setFieldValue(_Fields field, Object value) { switch (field) { case KEYSPACE: @@ -1195,6 +1241,14 @@ public class CfDef implements org.apache } break; + case KEY_ALIAS: + if (value == null) { + unsetKey_alias(); + } else { + setKey_alias((ByteBuffer)value); + } + break; + } } @@ -1272,6 +1326,9 @@ public class CfDef implements org.apache case ROW_CACHE_PROVIDER: return getRow_cache_provider(); + case KEY_ALIAS: + return getKey_alias(); + } throw new IllegalStateException(); } @@ -1331,6 +1388,8 @@ public class CfDef implements org.apache return isSetKey_validation_class(); case ROW_CACHE_PROVIDER: return isSetRow_cache_provider(); + case KEY_ALIAS: + return isSetKey_alias(); } throw new IllegalStateException(); } @@ -1564,6 +1623,15 @@ public class CfDef implements org.apache return false; } + boolean this_present_key_alias = true && this.isSetKey_alias(); + boolean that_present_key_alias = true && that.isSetKey_alias(); + if (this_present_key_alias || that_present_key_alias) { + if (!(this_present_key_alias && that_present_key_alias)) + return false; + if (!this.key_alias.equals(that.key_alias)) + return false; + } + return true; } @@ -1691,6 +1759,11 @@ public class CfDef implements org.apache if (present_row_cache_provider) builder.append(row_cache_provider); + boolean present_key_alias = true && (isSetKey_alias()); + builder.append(present_key_alias); + if (present_key_alias) + builder.append(key_alias); + return builder.toHashCode(); } @@ -1942,6 +2015,16 @@ public class CfDef implements org.apache return lastComparison; } } + lastComparison = Boolean.valueOf(isSetKey_alias()).compareTo(typedOther.isSetKey_alias()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetKey_alias()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.key_alias, typedOther.key_alias); + if (lastComparison != 0) { + return lastComparison; + } + } return 0; } @@ -2152,6 +2235,13 @@ public class CfDef implements org.apache org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type); } break; + case 28: // KEY_ALIAS + if (field.type == org.apache.thrift.protocol.TType.STRING) { + this.key_alias = iprot.readBinary(); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type); + } + break; default: org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type); } @@ -2310,6 +2400,13 @@ public class CfDef implements org.apache oprot.writeFieldEnd(); } } + if (this.key_alias != null) { + if (isSetKey_alias()) { + oprot.writeFieldBegin(KEY_ALIAS_FIELD_DESC); + oprot.writeBinary(this.key_alias); + oprot.writeFieldEnd(); + } + } oprot.writeFieldStop(); oprot.writeStructEnd(); } @@ -2498,6 +2595,16 @@ public class CfDef implements org.apache } first = false; } + if (isSetKey_alias()) { + if (!first) sb.append(", "); + sb.append("key_alias:"); + if (this.key_alias == null) { + sb.append("null"); + } else { + org.apache.thrift.TBaseHelper.toString(this.key_alias, sb); + } + first = false; + } sb.append(")"); return sb.toString(); } Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Apr 12 21:08:08 2011 @@ -1,7 +1,7 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1090647,1091503,1091542 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1091087,1091503,1091542 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654 -/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1091148,1091508,1091544 +/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090935-1091111,1091113,1091148,1091508,1091544 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-834239,834349-834350 Modified: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java (original) +++ cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java Tue Apr 12 21:08:08 2011 @@ -44,6 +44,6 @@ import org.slf4j.LoggerFactory; public class Constants { - public static final String VERSION = "20.0.0"; + public static final String VERSION = "20.1.0"; } Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Apr 12 21:08:08 2011 @@ -1,7 +1,7 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1090647,1091503,1091542 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1091087,1091503,1091542 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654 -/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1091148,1091508,1091544 +/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090935-1091111,1091113,1091148,1091508,1091544 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-834239,834349-834350 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Apr 12 21:08:08 2011 @@ -1,7 +1,7 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1090647,1091503,1091542 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1091087,1091503,1091542 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654 -/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1091148,1091508,1091544 +/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090935-1091111,1091113,1091148,1091508,1091544 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-834239,834349-834350 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Apr 12 21:08:08 2011 @@ -1,7 +1,7 @@ /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000 -/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1090647,1091503,1091542 +/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1091087,1091503,1091542 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654 -/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1091148,1091508,1091544 +/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090935-1091111,1091113,1091148,1091508,1091544 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-834239,834349-834350 Modified: cassandra/trunk/src/avro/internode.genavro URL: http://svn.apache.org/viewvc/cassandra/trunk/src/avro/internode.genavro?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/src/avro/internode.genavro (original) +++ cassandra/trunk/src/avro/internode.genavro Tue Apr 12 21:08:08 2011 @@ -64,6 +64,7 @@ protocol InterNode { union { int, null } id; union { array<ColumnDef>, null } column_metadata; union { string, null } row_cache_provider = "org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider"; + union { null, bytes } key_alias = null; } @aliases(["org.apache.cassandra.config.avro.KsDef"]) Modified: cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java Tue Apr 12 21:08:08 2011 @@ -43,6 +43,7 @@ import org.apache.cassandra.db.marshal.T import org.apache.cassandra.db.marshal.UTF8Type; import org.apache.cassandra.db.migration.Migration; import org.apache.cassandra.io.SerDeUtils; +import org.apache.cassandra.thrift.InvalidRequestException; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.Pair; @@ -131,7 +132,7 @@ public final class CFMetaData //REQUIRED public final Integer cfId; // internal id, never exposed to user - public final String ksName; // name of keyspace + public final String ksName; // name of keyspace public final String cfName; // name of this column family public final ColumnFamilyType cfType; // standard, super public final AbstractType comparator; // bytes, long, timeuuid, utf8, etc. @@ -155,6 +156,7 @@ public final class CFMetaData private double memtableOperationsInMillions; // default based on throughput private double mergeShardsChance; // default 0.1, chance [0.0, 1.0] of merging old shards during replication private IRowCacheProvider rowCacheProvider; + private ByteBuffer keyAlias; // default NULL // NOTE: if you find yourself adding members to this class, make sure you keep the convert methods in lockstep. private Map<ByteBuffer, ColumnDefinition> column_metadata; @@ -175,6 +177,7 @@ public final class CFMetaData public CFMetaData memSize(int prop) {memtableThroughputInMb = prop; return this;} public CFMetaData memOps(double prop) {memtableOperationsInMillions = prop; return this;} public CFMetaData mergeShardsChance(double prop) {mergeShardsChance = prop; return this;} + public CFMetaData keyAlias(ByteBuffer prop) {keyAlias = prop; return this;} public CFMetaData columnMetadata(Map<ByteBuffer,ColumnDefinition> prop) {column_metadata = prop; return this;} public CFMetaData rowCacheProvider(IRowCacheProvider prop) { rowCacheProvider = prop; return this;}; @@ -236,6 +239,7 @@ public final class CFMetaData defaultValidator = BytesType.instance; keyValidator = BytesType.instance; comment = ""; + keyAlias = null; // This qualifies as a 'strange default'. column_metadata = new HashMap<ByteBuffer,ColumnDefinition>(); } @@ -335,6 +339,7 @@ public final class CFMetaData cf.memtable_throughput_in_mb = memtableThroughputInMb; cf.memtable_operations_in_millions = memtableOperationsInMillions; cf.merge_shards_chance = mergeShardsChance; + cf.key_alias = keyAlias; cf.column_metadata = SerDeUtils.createArray(column_metadata.size(), org.apache.cassandra.db.migration.avro.ColumnDef.SCHEMA$); for (ColumnDefinition cd : column_metadata.values()) @@ -399,6 +404,7 @@ public final class CFMetaData throw new RuntimeException(e); } } + if (cf.key_alias != null) { newCFMD.keyAlias(cf.key_alias); } return newCFMD.comment(cf.comment.toString()) .rowCacheSize(cf.row_cache_size) @@ -496,6 +502,11 @@ public final class CFMetaData return rowCacheProvider; } + public ByteBuffer getKeyAlias() + { + return keyAlias; + } + public Map<ByteBuffer, ColumnDefinition> getColumn_metadata() { return Collections.unmodifiableMap(column_metadata); @@ -506,7 +517,7 @@ public final class CFMetaData return superColumnName == null ? comparator : subcolumnComparator; } - public boolean equals(Object obj) + public boolean equals(Object obj) { if (obj == this) { @@ -542,6 +553,7 @@ public final class CFMetaData .append(memtableThroughputInMb, rhs.memtableThroughputInMb) .append(memtableOperationsInMillions, rhs.memtableOperationsInMillions) .append(mergeShardsChance, rhs.mergeShardsChance) + .append(keyAlias, rhs.keyAlias) .isEquals(); } @@ -571,6 +583,7 @@ public final class CFMetaData .append(memtableThroughputInMb) .append(memtableOperationsInMillions) .append(mergeShardsChance) + .append(keyAlias) .toHashCode(); } @@ -612,7 +625,49 @@ public final class CFMetaData if (!cf_def.isSetRow_cache_provider()) cf_def.setRow_cache_provider(CFMetaData.DEFAULT_ROW_CACHE_PROVIDER); } - + + public static CFMetaData convertToCFMetaData(org.apache.cassandra.thrift.CfDef cf_def) throws InvalidRequestException, ConfigurationException + { + ColumnFamilyType cfType = ColumnFamilyType.create(cf_def.column_type); + if (cfType == null) + { + throw new InvalidRequestException("Invalid column type " + cf_def.column_type); + } + + applyImplicitDefaults(cf_def); + + validateMinMaxCompactionThresholds(cf_def); + validateMemtableSettings(cf_def); + validateAliasCompares(cf_def); + + CFMetaData newCFMD = new CFMetaData(cf_def.keyspace, + cf_def.name, + cfType, + DatabaseDescriptor.getComparator(cf_def.comparator_type), + cf_def.subcomparator_type == null ? null : DatabaseDescriptor.getComparator(cf_def.subcomparator_type)); + + if (cf_def.isSetGc_grace_seconds()) { newCFMD.gcGraceSeconds(cf_def.gc_grace_seconds); } + if (cf_def.isSetMin_compaction_threshold()) { newCFMD.minCompactionThreshold(cf_def.min_compaction_threshold); } + if (cf_def.isSetMax_compaction_threshold()) { newCFMD.maxCompactionThreshold(cf_def.max_compaction_threshold); } + if (cf_def.isSetRow_cache_save_period_in_seconds()) { newCFMD.rowCacheSavePeriod(cf_def.row_cache_save_period_in_seconds); } + if (cf_def.isSetKey_cache_save_period_in_seconds()) { newCFMD.keyCacheSavePeriod(cf_def.key_cache_save_period_in_seconds); } + if (cf_def.isSetMemtable_flush_after_mins()) { newCFMD.memTime(cf_def.memtable_flush_after_mins); } + if (cf_def.isSetMemtable_throughput_in_mb()) { newCFMD.memSize(cf_def.memtable_throughput_in_mb); } + if (cf_def.isSetMemtable_operations_in_millions()) { newCFMD.memOps(cf_def.memtable_operations_in_millions); } + if (cf_def.isSetMerge_shards_chance()) { newCFMD.mergeShardsChance(cf_def.merge_shards_chance); } + if (cf_def.isSetRow_cache_provider()) { newCFMD.rowCacheProvider(FBUtilities.newCacheProvider(cf_def.row_cache_provider)); } + if (cf_def.isSetKey_alias()) { newCFMD.keyAlias(cf_def.key_alias); } + + return newCFMD.comment(cf_def.comment) + .rowCacheSize(cf_def.row_cache_size) + .keyCacheSize(cf_def.key_cache_size) + .readRepairChance(cf_def.read_repair_chance) + .replicateOnWrite(cf_def.replicate_on_write) + .defaultValidator(DatabaseDescriptor.getComparator(cf_def.default_validation_class)) + .keyValidator(DatabaseDescriptor.getComparator(cf_def.key_validation_class)) + .columnMetadata(ColumnDefinition.fromColumnDef(cf_def.column_metadata)); + } + // merges some final fields from this CFM with modifiable fields from CfDef into a new CFMetaData. public void apply(org.apache.cassandra.db.migration.avro.CfDef cf_def) throws ConfigurationException { @@ -638,6 +693,7 @@ public final class CFMetaData validateMinMaxCompactionThresholds(cf_def); validateMemtableSettings(cf_def); + validateAliasCompares(cf_def); comment = enforceCommentNotNull(cf_def.comment); rowCacheSize = cf_def.row_cache_size; @@ -657,7 +713,8 @@ public final class CFMetaData mergeShardsChance = cf_def.merge_shards_chance; if (cf_def.row_cache_provider != null) rowCacheProvider = FBUtilities.newCacheProvider(cf_def.row_cache_provider.toString()); - + keyAlias = cf_def.key_alias; + // adjust secondary indexes. figure out who is coming and going. Set<ByteBuffer> toRemove = new HashSet<ByteBuffer>(); Set<ByteBuffer> newIndexNames = new HashSet<ByteBuffer>(); @@ -723,6 +780,7 @@ public final class CFMetaData def.setMemtable_throughput_in_mb(cfm.memtableThroughputInMb); def.setMemtable_operations_in_millions(cfm.memtableOperationsInMillions); def.setMerge_shards_chance(cfm.mergeShardsChance); + def.setKey_alias(cfm.keyAlias); List<org.apache.cassandra.thrift.ColumnDef> column_meta = new ArrayList< org.apache.cassandra.thrift.ColumnDef>(cfm.column_metadata.size()); for (ColumnDefinition cd : cfm.column_metadata.values()) { @@ -767,6 +825,7 @@ public final class CFMetaData def.memtable_operations_in_millions = cfm.memtableOperationsInMillions; def.merge_shards_chance = cfm.mergeShardsChance; def.key_validation_class = cfm.keyValidator.getClass().getName(); + def.key_alias = cfm.keyAlias; List<org.apache.cassandra.db.migration.avro.ColumnDef> column_meta = new ArrayList<org.apache.cassandra.db.migration.avro.ColumnDef>(cfm.column_metadata.size()); for (ColumnDefinition cd : cfm.column_metadata.values()) { @@ -807,6 +866,7 @@ public final class CFMetaData newDef.row_cache_size = def.getRow_cache_size(); newDef.subcomparator_type = def.getSubcomparator_type(); newDef.merge_shards_chance = def.getMerge_shards_chance(); + newDef.key_alias = def.key_alias; List<org.apache.cassandra.db.migration.avro.ColumnDef> columnMeta = new ArrayList<org.apache.cassandra.db.migration.avro.ColumnDef>(); if (def.isSetColumn_metadata()) @@ -905,6 +965,20 @@ public final class CFMetaData DatabaseDescriptor.validateMemtableOperations(cf_def.memtable_operations_in_millions); } + public static void validateAliasCompares(org.apache.cassandra.thrift.CfDef cf_def) throws ConfigurationException + { + AbstractType comparator = DatabaseDescriptor.getComparator(cf_def.comparator_type); + if (cf_def.key_alias != null) + comparator.validate(cf_def.key_alias); + } + + public static void validateAliasCompares(org.apache.cassandra.db.migration.avro.CfDef cf_def) throws ConfigurationException + { + AbstractType comparator = DatabaseDescriptor.getComparator(cf_def.comparator_type); + if (cf_def.key_alias != null) + comparator.validate(cf_def.key_alias); + } + @Override public String toString() { @@ -931,6 +1005,7 @@ public final class CFMetaData .append("memtableThroughputInMb", memtableThroughputInMb) .append("memtableOperationsInMillions", memtableOperationsInMillions) .append("mergeShardsChance", mergeShardsChance) + .append("keyAlias", keyAlias) .append("column_metadata", column_metadata) .toString(); } Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Tue Apr 12 21:08:08 2011 @@ -207,6 +207,7 @@ public class StorageService implements I public void finishBootstrapping() { isBootstrapMode = false; + SystemTable.setBootstrapped(true); setToken(getLocalToken()); logger_.info("Bootstrap/move completed! Now serving reads."); } @@ -439,14 +440,13 @@ public class StorageService implements I logger_.info("This node will not auto bootstrap because it is configured to be a seed node."); Token token; - boolean bootstrapped = false; if (DatabaseDescriptor.isAutoBootstrap() && !(DatabaseDescriptor.getSeeds().contains(FBUtilities.getLocalAddress()) || SystemTable.isBootstrapped())) { - setMode("Joining: getting load information", true); + setMode("Joining: getting load and schema information", true); StorageLoadBalancer.instance.waitForLoadInfo(); if (logger_.isDebugEnabled()) - logger_.debug("... got load info"); + logger_.debug("... got load + schema info"); if (tokenMetadata_.isMember(FBUtilities.getLocalAddress())) { String s = "This node is already a member of the token ring; bootstrap aborted. (If replacing a dead node, remove the old one from the ring first.)"; @@ -459,8 +459,6 @@ public class StorageService implements I { bootstrap(token); assert !isBootstrapMode; // bootstrap will block until finished - bootstrapped = true; - SystemTable.setBootstrapped(true); // first startup is only chance to bootstrap } // else nothing to do, go directly to participating in ring } @@ -485,7 +483,7 @@ public class StorageService implements I { logger_.info("Using saved token " + token); } - } + } SystemTable.setBootstrapped(true); // first startup is only chance to bootstrap setToken(token); Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=1091572&r1=1091571&r2=1091572&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java Tue Apr 12 21:08:08 2011 @@ -790,7 +790,7 @@ public class CassandraServer implements try { - applyMigrationOnStage(new AddColumnFamily(convertToCFMetaData(cf_def))); + applyMigrationOnStage(new AddColumnFamily(CFMetaData.convertToCFMetaData(cf_def))); return DatabaseDescriptor.getDefsVersion().toString(); } catch (ConfigurationException e) @@ -855,7 +855,7 @@ public class CassandraServer implements for (CfDef cfDef : ks_def.cf_defs) { ThriftValidation.validateCfDef(cfDef); - cfDefs.add(convertToCFMetaData(cfDef)); + cfDefs.add(CFMetaData.convertToCFMetaData(cfDef)); } // Attempt to instantiate the ARS, which will throw a ConfigException if @@ -996,45 +996,6 @@ public class CassandraServer implements throw new SchemaDisagreementException(); } - // @see CFMetaData.applyImplicitDefaults(). - private CFMetaData convertToCFMetaData(CfDef cf_def) throws InvalidRequestException, ConfigurationException - { - ColumnFamilyType cfType = ColumnFamilyType.create(cf_def.column_type); - if (cfType == null) - { - throw new InvalidRequestException("Invalid column type " + cf_def.column_type); - } - - CFMetaData.applyImplicitDefaults(cf_def); - CFMetaData.validateMinMaxCompactionThresholds(cf_def); - CFMetaData.validateMemtableSettings(cf_def); - - CFMetaData newCFMD = new CFMetaData(cf_def.keyspace, - cf_def.name, - cfType, - DatabaseDescriptor.getComparator(cf_def.comparator_type), - cf_def.subcomparator_type == null ? null : DatabaseDescriptor.getComparator(cf_def.subcomparator_type)); - - if (cf_def.isSetGc_grace_seconds()) { newCFMD.gcGraceSeconds(cf_def.gc_grace_seconds); } - if (cf_def.isSetMin_compaction_threshold()) { newCFMD.minCompactionThreshold(cf_def.min_compaction_threshold); } - if (cf_def.isSetMax_compaction_threshold()) { newCFMD.maxCompactionThreshold(cf_def.max_compaction_threshold); } - if (cf_def.isSetRow_cache_save_period_in_seconds()) { newCFMD.rowCacheSavePeriod(cf_def.row_cache_save_period_in_seconds); } - if (cf_def.isSetKey_cache_save_period_in_seconds()) { newCFMD.keyCacheSavePeriod(cf_def.key_cache_save_period_in_seconds); } - if (cf_def.isSetMemtable_flush_after_mins()) { newCFMD.memTime(cf_def.memtable_flush_after_mins); } - if (cf_def.isSetMemtable_throughput_in_mb()) { newCFMD.memSize(cf_def.memtable_throughput_in_mb); } - if (cf_def.isSetMemtable_operations_in_millions()) { newCFMD.memOps(cf_def.memtable_operations_in_millions); } - if (cf_def.isSetMerge_shards_chance()) { newCFMD.mergeShardsChance(cf_def.merge_shards_chance); } - if (cf_def.isSetRow_cache_provider()) { newCFMD.rowCacheProvider(FBUtilities.newCacheProvider(cf_def.row_cache_provider)); } - - return newCFMD.comment(cf_def.comment) - .rowCacheSize(cf_def.row_cache_size) - .keyCacheSize(cf_def.key_cache_size) - .readRepairChance(cf_def.read_repair_chance) - .replicateOnWrite(cf_def.replicate_on_write) - .defaultValidator(DatabaseDescriptor.getComparator(cf_def.default_validation_class)) - .columnMetadata(ColumnDefinition.fromColumnDef(cf_def.column_metadata)); - } - public void truncate(String cfname) throws InvalidRequestException, UnavailableException, TException { logger.debug("truncating {} in {}", cfname, state().getKeyspace());