[ https://issues.apache.org/jira/browse/CASSANDRA-17698?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17679095#comment-17679095 ]
Branimir Lambov commented on CASSANDRA-17698: --------------------------------------------- {quote}The fix changes what is written on the sstables without changing their version. It's done in a way that patched C* instances will be able to read the index sstables produced by unpatched versions. However the opposite doesn't happen, so an unpatched version won't be able to read the index sstables produced by a patched version.{quote} Ouch, I missed the fact that we are introducing an incompatibility. It doesn't sound to me like a change that's acceptable for a patch release. I thought we could work around the problem by taking advantage of some imprecision of the existing code: it accepts specifications of the form {{PartitionerDefinedOrder(x=y)}} and ignores {{y}}. However, {{y}} can only be a single identifier, and the base type will often be complex. Should we limit the scope of this patch to 4.2/5.0? > sstabledump errors when dumping data from index > ----------------------------------------------- > > Key: CASSANDRA-17698 > URL: https://issues.apache.org/jira/browse/CASSANDRA-17698 > Project: Cassandra > Issue Type: Bug > Components: Tool/sstable > Reporter: Stefan Miklosovic > Assignee: maxwellguo > Priority: Normal > Fix For: 3.0.x, 3.11.x, 4.x > > Time Spent: 10h 10m > Remaining Estimate: 0h > > {code:java} > cqlsh> CREATE KEYSPACE ks1 WITH replication = {'class': 'SimpleStrategy', > 'replication_factor': 1}; > cqlsh> CREATE TABLE ks1.tb1 ( id text, name text, primary key (id)); > cqlsh> CREATE INDEX IF NOT EXISTS ON ks1.tb1(name); > cqlsh> INSERT INTO ks1.tb1 (id, name ) VALUES ( '1', 'Joe'); > cqlsh> exit > ./bin/nodetool flush > ./tools/bin/sstabledump > data/data/ks1/tb1-1c3c5f10ee4711ecab82eda2f44200b3/.tb1_name_idx/nb-1-big-Data.db > > [ > { > "partition" : { > "key" : [ "Joe" ], > "position" : 0 > }, > "rows" : [ > { > "type" : "row", > "position" : 17, > "clustering" : [ ] } ] } ]Exception in thread "main" > java.lang.UnsupportedOperationException > at > org.apache.cassandra.db.marshal.PartitionerDefinedOrder.toJSONString(PartitionerDefinedOrder.java:87) > at > org.apache.cassandra.db.marshal.AbstractType.toJSONString(AbstractType.java:187) > at > org.apache.cassandra.tools.JsonTransformer.serializeClustering(JsonTransformer.java:372) > at > org.apache.cassandra.tools.JsonTransformer.serializeRow(JsonTransformer.java:269) > at > org.apache.cassandra.tools.JsonTransformer.serializePartition(JsonTransformer.java:235) > 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:482) > at > java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) > 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:113) > at > org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:214) {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org