Simon Zhou created CASSANDRA-14199:
--------------------------------------

             Summary: exception when dumping sstable with frozen collection of 
UUID
                 Key: CASSANDRA-14199
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14199
             Project: Cassandra
          Issue Type: Bug
          Components: Tools
            Reporter: Simon Zhou
            Assignee: Simon Zhou
             Fix For: 3.0.x


When dumping (sstabledump) sstable with frozen collection of UUID, there is 
exception like this:
{code:java}
Exception in thread "main" org.apache.cassandra.serializers.MarshalException: 
UUID should be 16 or 0 bytes (24)
        at 
org.apache.cassandra.serializers.UUIDSerializer.validate(UUIDSerializer.java:43)
        at 
org.apache.cassandra.db.marshal.AbstractType.getString(AbstractType.java:128)
        at 
org.apache.cassandra.tools.JsonTransformer.serializeCell(JsonTransformer.java:440)
        at 
org.apache.cassandra.tools.JsonTransformer.serializeColumnData(JsonTransformer.java:374)
        at 
org.apache.cassandra.tools.JsonTransformer.serializeRow(JsonTransformer.java:278)
        at 
org.apache.cassandra.tools.JsonTransformer.serializePartition(JsonTransformer.java:213)
        at 
java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
        at 
java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
        at java.util.Iterator.forEachRemaining(Iterator.java:116)
        at 
java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at 
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at 
java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
        at 
java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at 
java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
        at 
org.apache.cassandra.tools.JsonTransformer.toJson(JsonTransformer.java:102)
        at 
org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:242){code}
 

*Steps to reproduce:*
{code:java}
cqlsh> create TABLE stresscql.sstabledump_test(userid text PRIMARY KEY, c1 
list<uuid>, c2 frozen<list<uuid>>, c3 set<text>, c4 frozen<set<text>>, c5 
map<text,text>, c6 frozen<map<text,text>>);
cqlsh> insert INTO stresscql.sstabledump_test (userid, c1, c2, c3, c4, c5, c6) 
VALUES ( 'id', [6947e8c0-02fa-11e8-87e1-fb0d0e20b5c4], 
[6947e8c0-02fa-11e8-87e1-fb0d0e20b5c4], {'set', 'user'}, {'view', 'over'}, 
{'good': 'hello', 'root': 'text'}, {'driver': 'java', 'note': 'new'});{code}
 

*Root cause:*

Frozen collection is treated as simple column and it's the client's 
responsibility to parse the data from ByteBuffer. We have this logic in 
different drivers but sstabledump doesn't have the logic in place. It just 
treat the whole collection as a single UUID.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to