Hello cassandra community,
I'm having headache understanding the collections serialization as part of the
org.apache.cassandra.triggers.ITrigger API.
let me explain.
let's suppose I'm creating a table with following column
stamps map<text,bigint>
and I'm writing a Java implementation of the Itrigger interface
my goal is to translate the cell value of that column into some Java
Map<String,Long>
so, when a new row is inserted with for example the value
{"produced":123488492, "consumed": 987654321}
what I got in the trigger implemention for that row is a cell of type
org.apache.cassandra.db.marshal.MapType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.LongType)
(so far so good)
but a value of
java.nio.HeapByteBuffer[pos=0 lim=8 cap=8]=00000000075c48ec
So, to me, it looks very strange, as if I deserialize using the MapSerializer,
I got 0 elements in the map (the first 4 bytes)
Then , it complains about the extra bytes being there.. and sends back an
exception.
Strange thing is that the next 4 bytes are reflecting the 1st value of the map
: 123488492
But where are the other values gone in the serialized buffer?
I'm wondering if someone has faced the same kind of issue or knows how to
deserialize correctly a cassandra collection.
Thank you.
Note: I have tested on cassandra 3.11 and 4.0.1 , and same thing applies
unfortunately.
Christophe