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:aa...@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
>  

Reply via email to