[ https://issues.apache.org/jira/browse/CASSANDRA-14200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16344331#comment-16344331 ]
Simon Zhou commented on CASSANDRA-14200: ---------------------------------------- Fix for 3.0 is [here|https://github.com/szhou1234/cassandra/commit/701d7cfa7425e595363a07138baa2c5661d9f1cf]. I'll provide fixes for later versions. [~cnlwsu] could you take a look at this one as well? After the fix, the output of sstabledump looks like this (note the column "terminated_at"): {code} "rows" : [ { "type" : "row", "position" : 302, "clustering" : [ "68dc822e-0481-41d5-8dbd-10bd00703644" ], "liveness_info" : { "tstamp" : "2018-01-24T14:34:45.716783Z" }, "cells" : [ { "name" : "moved_at", "value" : "\"2018-01-24 14:34:45.698Z\"" }, { "name" : "node_uuid", "value" : "\"0b045d26-764c-4023-9570-00b8ebe10cca\"" }, { "name" : "processed_event_uuids", "value" : "[\"28d81650-7119-456c-9d1e-216ed8986a55\"]" }, { "name" : "status", "value" : "0" }, { "name" : "terminated_at" }, { "name" : "event_types", "deletion_info" : { "marked_deleted" : "2018-01-24T14:34:45.716782Z", "local_delete_time" : "2018-01-24T14:34:45Z" } } ] } ] {code} > NullPointerException when dumping sstable with null value for timestamp column > ------------------------------------------------------------------------------ > > Key: CASSANDRA-14200 > URL: https://issues.apache.org/jira/browse/CASSANDRA-14200 > Project: Cassandra > Issue Type: Bug > Reporter: Simon Zhou > Assignee: Simon Zhou > Priority: Major > Fix For: 3.0.x > > > We have an sstable whose schema has a column of type timestamp and it's not > part of primary key. When dumping the sstable using sstabledump there is NPE > like this: > {code:java} > Exception in thread "main" java.lang.NullPointerException > at java.util.Calendar.setTime(Calendar.java:1770) > at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943) > at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936) > at java.text.DateFormat.format(DateFormat.java:345) > at > org.apache.cassandra.db.marshal.TimestampType.toJSONString(TimestampType.java:93) > at > org.apache.cassandra.tools.JsonTransformer.serializeCell(JsonTransformer.java:442) > at > org.apache.cassandra.tools.JsonTransformer.serializeColumnData(JsonTransformer.java:376) > at > org.apache.cassandra.tools.JsonTransformer.serializeRow(JsonTransformer.java:280) > at > org.apache.cassandra.tools.JsonTransformer.serializePartition(JsonTransformer.java:215) > 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:104) > at org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:242){code} > The reason is that we use a null Date when there is no value for this column: > {code} > public Date deserialize(ByteBuffer bytes) > { > return bytes.remaining() == 0 ? null : new > Date(ByteBufferUtil.toLong(bytes)); > } > {code} > It seems that we should not deserialize columns with null values. -- 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