I've not used that binary memtable example before, but reading the contrib example (from 0.7.4) there is something odd.

We build a CF in the reduce() function and then serialise it in the createMessage() function and hide it inside another Column. So that eventually Table.load() can use that column name which is the CF ID and it's value to call ColumnFamilyStore.applyBinary()

But the CF we are bulk loading is a Super CF and createMessage() creates a CF instance using the ctor and forces it to be Standard so the trick above will work. When the message is created from the RowMutation it uses the hacked CF that writes out the CF ID for the super CF but writes Columns instead of SuperColumns. 

However when the BinaryVerbHandler tries to deserialise the RowMutation message a correct super CF is created by the ColumnFamilySerialiser using the CF ID and it fails because columns were serialised instead of super columns. 

So we are trying to sneak columns that contain serialised super columns through a super column family.

Has anyone had the bmt_example working ? What am I missing ? Should the bmt feature use a super column when the target is CF is a super column. 

Cheers
Aaron
  
On 1 Apr 2011, at 19:24, George Ciubotaru wrote:

Hello,
 
The exception from the previous email was caused by a mistake of mine, sorry for that. Iíve fixed it, no more exceptions of the client (bulk loader) side but Iím getting now an exception in Cassandra. My configuration is simple: I have a single Cassandra instance running and I launch the bulk loader from a different box (using version 0.7.0).
 
ERROR 00:20:17,877 Fatal exception in thread Thread[MutationStage:33,5,main]
java.lang.RuntimeException: java.io.IOException: Invalid localDeleteTime read: 0
        at org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:54)
        at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:63)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Invalid localDeleteTime read: 0
        at org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:356)
        at org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:313)
        at org.apache.cassandra.db.ColumnFamilySerializer.deserializeColumns(ColumnFamilySerializer.java:129)
        at org.apache.cassandra.db.ColumnFamilySerializer.deserialize(ColumnFamlySerializer.java:120)
        at org.apache.cassandra.db.RowMutationSerializer.defreezeTheMaps(RowMutation.java:385)
        at org.apache.cassandra.db.RowMutationSerializer.deserialize(RowMutation.java:395)
        at org.apache.cassandra.db.RowMutationSerializer.deserialize(RowMutation.java:353)
        at org.apache.cassandra.db.RowMutationMessageSerializer.deserialize(RowMutationMessage.java:81)
        at org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:42)
        ... 4 more
 
I have found some other discussion thread with e similar error but unfortunately no concrete response: http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Cassandra-0-7-beta3-BinaryMemtable-and-Supercolumns-td5730324.html
 
Thanks,
George
 
From: aaron morton [mailto:aaron@thelastpickle.com] 
Sent: 31 March 2011 14:03
To: user@cassandra.apache.org
Subject: Re: Using RowMutations with super columns
 
The CassandraBulkLoader example is written to use Super Columns, so seems odd.  
 
Do you have the rest of the error stack ? 
 
Aaron
 
 
On 31 Mar 2011, at 04:54, George Ciubotaru wrote:


Hello,
 
Iím using CassandraBulkLoader.java (https://svn.apache.org/repos/asf/cassandra/trunk/contrib/bmt_example/CassandraBulkLoader.java) as base to build a bulk loader. Everything works fine for standard column families but it fails when trying to insert data in super columns throwing this exception:
 
Exception in thread "main" java.lang.UnsupportedOperationException: This operation is not supported for Super Columns.
                at org.apache.cassandra.db.SuperColumn.timestamp(SuperColumn.java:143)
                at org.apache.cassandra.db.ColumnSerializer.serialize(ColumnSerializer.java:55)
                at org.apache.cassandra.db.ColumnSerializer.serialize(ColumnSerializer.java:35)
                at org.apache.cassandra.db.ColumnFamilySerializer.serializeForSSTable(ColumnFamilySerializer.java:87)
                at org.apache.cassandra.db.ColumnFamilySerializer.serializeWithIndexes(ColumnFamilySerializer.java:106)
 
Any idea here?
 
Thank you,
George