Hi. I would like to use custom data type. Although it was work at Cassandra 1.2.9, but it is not work at Cassandra 2.0.0. Did anything change by Cassandra 2.0.0 ?
My test procedure is as follows: ### DummyType.class ``` package my.marshal; import java.nio.ByteBuffer; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.db.marshal.MarshalException; import org.apache.cassandra.utils.ByteBufferUtil; public class DummyType extends AbstractType<Void> { public static final DummyType instance = new DummyType(); private DummyType(){ } public Void compose(ByteBuffer bytes){ return null; } public ByteBuffer decompose(Void value){ return ByteBufferUtil.EMPTY_BYTE_BUFFER; } public int compare(ByteBuffer o1, ByteBuffer o2){ return 0; } public String getString(ByteBuffer bytes){ return ""; } public ByteBuffer fromString(String source) throws MarshalException{ if(!source.isEmpty()) throw new MarshalException(String.format("'%s' is not empty", source)); return ByteBufferUtil.EMPTY_BYTE_BUFFER; } public void validate(ByteBuffer bytes) throws MarshalException{ } } ``` ### At Cassandra 1.2.9 1) Create DummyType class and compiled by JDK6. 2) Drop that jar (my-marshal-1.0.0.jar) in lib directory and start the cluster. ``` $ tail -f /var/log/cassandra/cassandra.log (snip) INFO 21:19:58,126 Classpath: /opt/cassandra/bin/../conf:/opt/cassandra/bin/../build/classes/main:/opt/cassandra/bin/../build/classes/thrift:/opt/cassandra/bin/../lib/antlr-3.2.jar:/opt/cassandra/bin/../lib/apache-cassandra-1.2.9.jar:/opt/cassandra/bin/../lib/apache-cassandra-clientutil-1.2.9.jar:/opt/cassandra/bin/../lib/apache-cassandra-thrift-1.2.9.jar:/opt/cassandra/bin/../lib/avro-1.4.0-fixes.jar:/opt/cassandra/bin/../lib/avro-1.4.0-sources-fixes.jar:/opt/cassandra/bin/../lib/commons-cli-1.1.jar:/opt/cassandra/bin/../lib/commons-codec-1.2.jar:/opt/cassandra/bin/../lib/commons-lang-2.6.jar:/opt/cassandra/bin/../lib/compress-lzf-0.8.4.jar:/opt/cassandra/bin/../lib/concurrentlinkedhashmap-lru-1.3.jar:/opt/cassandra/bin/../lib/guava-13.0.1.jar:/opt/cassandra/bin/../lib/high-scale-lib-1.1.2.jar:/opt/cassandra/bin/../lib/jackson-core-asl-1.9.2.jar:/opt/cassandra/bin/../lib/jackson-mapper-asl-1.9.2.jar:/opt/cassandra/bin/../lib/jamm-0.2.5.jar:/opt/cassandra/bin/../lib/jbcrypt-0.3m.jar:/opt/cassandra/bin/../lib/jline-1.0.jar:/opt/cassandra/bin/../lib/json-simple-1.1.jar:/opt/cassandra/bin/../lib/libthrift-0.7.0.jar:/opt/cassandra/bin/../lib/log4j-1.2.16.jar:/opt/cassandra/bin/../lib/lz4-1.1.0.jar:/opt/cassandra/bin/../lib/metrics-core-2.0.3.jar:/opt/cassandra/bin/../lib/my-marshal-1.0.0.jar:/opt/cassandra/bin/../lib/netty-3.5.9.Final.jar:/opt/cassandra/bin/../lib/servlet-api-2.5-20081211.jar:/opt/cassandra/bin/../lib/slf4j-api-1.7.2.jar:/opt/cassandra/bin/../lib/slf4j-log4j12-1.7.2.jar:/opt/cassandra/bin/../lib/snakeyaml-1.6.jar:/opt/cassandra/bin/../lib/snappy-java-1.0.5.jar:/opt/cassandra/bin/../lib/snaptree-0.1.jar:/opt/cassandra/bin/../lib/jamm-0.2.5.jar (snip) ``` 3) Create column family that use DummyType. ``` cqlsh:test> CREATE TABLE test_cf ( key 'my.marshal.DummyType' PRIMARY KEY); cqlsh:test> DESCRIBE TABLE test_cf; CREATE TABLE test_cf ( key 'my.marshal.DummyType' PRIMARY KEY ) WITH bloom_filter_fp_chance=0.010000 AND caching='KEYS_ONLY' AND comment='' AND dclocal_read_repair_chance=0.000000 AND gc_grace_seconds=864000 AND read_repair_chance=0.100000 AND replicate_on_write='true' AND populate_io_cache_on_flush='false' AND compaction={'class': 'SizeTieredCompactionStrategy'} AND compression={'sstable_compression': 'SnappyCompressor'}; ``` ### At Cassandra 2.0.0 1) Create DummyType class and compiled by JDK7. 2) Drop that jar (my-marshal-1.0.0.jar) in lib directory and start the cluster. ``` $ tail -f /var/log/cassandra/cassandra.log (snip) INFO 21:10:33,789 Classpath: /opt/cassandra/bin/../conf:/opt/cassandra/bin/../build/classes/main:/opt/cassandra/bin/../build/classes/thrift:/opt/cassandra/bin/../lib/antlr-3.2.jar:/opt/cassandra/bin/../lib/apache-cassandra-2.0.0.jar:/opt/cassandra/bin/../lib/apache-cassandra-clientutil-2.0.0.jar:/opt/cassandra/bin/../lib/apache-cassandra-thrift-2.0.0.jar:/opt/cassandra/bin/../lib/commons-cli-1.1.jar:/opt/cassandra/bin/../lib/commons-codec-1.2.jar:/opt/cassandra/bin/../lib/commons-lang-2.6.jar:/opt/cassandra/bin/../lib/compress-lzf-0.8.4.jar:/opt/cassandra/bin/../lib/concurrentlinkedhashmap-lru-1.3.jar:/opt/cassandra/bin/../lib/disruptor-3.0.1.jar:/opt/cassandra/bin/../lib/guava-13.0.1.jar:/opt/cassandra/bin/../lib/high-scale-lib-1.1.2.jar:/opt/cassandra/bin/../lib/jackson-core-asl-1.9.2.jar:/opt/cassandra/bin/../lib/jackson-mapper-asl-1.9.2.jar:/opt/cassandra/bin/../lib/jamm-0.2.5.jar:/opt/cassandra/bin/../lib/jbcrypt-0.3m.jar:/opt/cassandra/bin/../lib/jline-1.0.jar:/opt/cassandra/bin/../lib/json-simple-1.1.jar:/opt/cassandra/bin/../lib/libthrift-0.9.0.jar:/opt/cassandra/bin/../lib/log4j-1.2.16.jar:/opt/cassandra/bin/../lib/lz4-1.1.0.jar:/opt/cassandra/bin/../lib/metrics-core-2.0.3.jar:/opt/cassandra/bin/../lib/my-marshal-1.0.0.jar:/opt/cassandra/bin/../lib/netty-3.5.9.Final.jar:/opt/cassandra/bin/../lib/servlet-api-2.5-20081211.jar:/opt/cassandra/bin/../lib/slf4j-api-1.7.2.jar:/opt/cassandra/bin/../lib/slf4j-log4j12-1.7.2.jar:/opt/cassandra/bin/../lib/snakeyaml-1.11.jar:/opt/cassandra/bin/../lib/snappy-java-1.0.5.jar:/opt/cassandra/bin/../lib/snaptree-0.1.jar:/opt/cassandra/bin/../lib/thrift-server-0.3.0.jar:/opt/cassandra/bin/../lib/jamm-0.2.5.jar (snip) ``` 3) Create column family that use DummyType. ``` cqlsh:test> CREATE TABLE test_cf ( key 'my.marshal.DummyType' PRIMARY KEY); Bad Request: Error setting type my.marshal.DummyType: Unable to find abstract-type class 'my.marshal.DummyType' ``` Thanks, Katsutoshi