[ 
https://issues.apache.org/jira/browse/CASSANDRA-4093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13242467#comment-13242467
 ] 

Jonathan Ellis commented on CASSANDRA-4093:
-------------------------------------------

The thing about backwards-compatibility hacks is you tend to get stuck with 
them.  I'm okay with any of these alternatives:

# Add a big huge warning to NEWS that this corner case is not supported to 1.1, 
but an alternative solution for "tagging" will be supported eventually.  Fail 
1.1 startup if such a schema startup is detected and explain the new limitation
# Wait until we actually have indexes on composite PKs supported to release 1.1
# Ask users@ if anyone actually has such a use case in production, and go with 
1 or 2 based on the responses

Here is why I'm willing to go scorched earth on this:

- Schema design is *the* most difficult thing to explain to new Cassandra 
users. We've made *huge* strides towards simplifying this in CQL3 and composite 
PKs. I don't think we can afford to dilute this with footnotes about how you 
can escape hatch back to the old world, dragging in all our old legacy baggage 
again. Put another way: it's time to bury "wtf is a supercolumn" once and for 
all.
- Of our hundreds of deployments of 0.8 and 1.0, I can live with one or two 
needing to wait for 1.1.2 or whatever to upgrade.  We have a pretty good feel 
at this point for commonly used features and this isn't one of those.

TLDR: backwards compatibility in this specific case is high cost, low benefit.
                
> schema_* CFs do not respect column comparator which leads to CLI commands 
> failure.
> ----------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-4093
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4093
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 1.1.0
>            Reporter: Dave Brosius
>            Assignee: Sylvain Lebresne
>             Fix For: 1.1.0
>
>         Attachments: 4093.txt, CASSANDRA-4093-CD-changes.patch
>
>
> ColumnDefinition.{ascii, utf8, bool, ...} static methods used to initialize 
> schema_* CFs column_metadata do not respect CF comparator and use 
> ByteBufferUtil.bytes(...) for column names which creates problems in CLI and 
> probably in other places.
> The CompositeType validator throws exception on first column
> String columnName = columnNameValidator.getString(columnDef.name);
> Because it appears the composite type length header is wrong (25455)
> AbstractCompositeType.getWithShortLength
> java.lang.IllegalArgumentException
>       at java.nio.Buffer.limit(Buffer.java:247)
>       at 
> org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCompositeType.java:50)
>       at 
> org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(AbstractCompositeType.java:59)
>       at 
> org.apache.cassandra.db.marshal.AbstractCompositeType.getString(AbstractCompositeType.java:139)
>       at 
> org.apache.cassandra.cli.CliClient.describeColumnFamily(CliClient.java:2046)
>       at 
> org.apache.cassandra.cli.CliClient.describeKeySpace(CliClient.java:1969)
>       at 
> org.apache.cassandra.cli.CliClient.executeShowKeySpaces(CliClient.java:1574)
> (seen in trunk)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to