You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Tyler Hobbs (JIRA)" <ji...@apache.org> on 2012/05/21 23:39:41 UTC

[jira] [Created] (CASSANDRA-4269) Setting column metadata for non-string comparator CFs breaks

Tyler Hobbs created CASSANDRA-4269:
--------------------------------------

             Summary: Setting column metadata for non-string comparator CFs breaks
                 Key: CASSANDRA-4269
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4269
             Project: Cassandra
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.1.0
            Reporter: Tyler Hobbs
            Priority: Trivial


For example, use a comparator of LongType and try to create an index on a column named 2 (0x0000000000000002).  You'll get a stracktrace in the logs similar to this:

{noformat}
java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input length = 2
	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:50)
	at org.apache.cassandra.cql3.CFDefinition.<init>(CFDefinition.java:115)
	at org.apache.cassandra.config.CFMetaData.updateCfDef(CFMetaData.java:1278)
	at org.apache.cassandra.config.CFMetaData.columnMetadata(CFMetaData.java:225)
	at org.apache.cassandra.config.CFMetaData.fromThrift(CFMetaData.java:636)
	at org.apache.cassandra.thrift.CassandraServer.system_update_column_family(CassandraServer.java:1061)
	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3436)
	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3424)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
	at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.nio.charset.MalformedInputException: Input length = 2
	at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
	at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781)
	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:163)
	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:120)
	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:46)
	... 13 more
{noformat}

This works in Cassandra 0.8 and 1.0.

--
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

        

[jira] [Commented] (CASSANDRA-4269) Setting column metadata for non-string comparator CFs breaks

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-4269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13280995#comment-13280995 ] 

Jonathan Ellis commented on CASSANDRA-4269:
-------------------------------------------

I assumed Tyler was referring to Thrift/CLI usage here -- I do think that requiring CQL3 column names to be strings is a Good Thing.
                
> Setting column metadata for non-string comparator CFs breaks
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-4269
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4269
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.0
>            Reporter: Tyler Hobbs
>            Assignee: Sylvain Lebresne
>            Priority: Trivial
>             Fix For: 1.1.1
>
>         Attachments: 4269.txt
>
>
> For example, use a comparator of LongType and try to create an index on a column named 2 (0x0000000000000002).  You'll get a stracktrace in the logs similar to this:
> {noformat}
> java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input length = 2
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:50)
> 	at org.apache.cassandra.cql3.CFDefinition.<init>(CFDefinition.java:115)
> 	at org.apache.cassandra.config.CFMetaData.updateCfDef(CFMetaData.java:1278)
> 	at org.apache.cassandra.config.CFMetaData.columnMetadata(CFMetaData.java:225)
> 	at org.apache.cassandra.config.CFMetaData.fromThrift(CFMetaData.java:636)
> 	at org.apache.cassandra.thrift.CassandraServer.system_update_column_family(CassandraServer.java:1061)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3436)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3424)
> 	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
> 	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
> 	at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.nio.charset.MalformedInputException: Input length = 2
> 	at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
> 	at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:163)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:120)
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:46)
> 	... 13 more
> {noformat}
> This works in Cassandra 0.8 and 1.0.

--
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

        

[jira] [Commented] (CASSANDRA-4269) Setting column metadata for non-string comparator CFs breaks

Posted by "Sylvain Lebresne (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-4269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13281005#comment-13281005 ] 

Sylvain Lebresne commented on CASSANDRA-4269:
---------------------------------------------

Agreed. The problem here is really much of an implementation detail. We happen to generate the CFDefinition object used by CQL3 in CFMetatData, and this even if CQL3 is not used per se. So internally it's easier if the code support non-utf8 columns, even though CQL3 won't allow to create them. Basically the patch make sure we correctly convert column names to string when going in the CQL3 side.
                
> Setting column metadata for non-string comparator CFs breaks
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-4269
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4269
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.0
>            Reporter: Tyler Hobbs
>            Assignee: Sylvain Lebresne
>            Priority: Trivial
>             Fix For: 1.1.1
>
>         Attachments: 4269.txt
>
>
> For example, use a comparator of LongType and try to create an index on a column named 2 (0x0000000000000002).  You'll get a stracktrace in the logs similar to this:
> {noformat}
> java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input length = 2
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:50)
> 	at org.apache.cassandra.cql3.CFDefinition.<init>(CFDefinition.java:115)
> 	at org.apache.cassandra.config.CFMetaData.updateCfDef(CFMetaData.java:1278)
> 	at org.apache.cassandra.config.CFMetaData.columnMetadata(CFMetaData.java:225)
> 	at org.apache.cassandra.config.CFMetaData.fromThrift(CFMetaData.java:636)
> 	at org.apache.cassandra.thrift.CassandraServer.system_update_column_family(CassandraServer.java:1061)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3436)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3424)
> 	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
> 	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
> 	at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.nio.charset.MalformedInputException: Input length = 2
> 	at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
> 	at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:163)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:120)
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:46)
> 	... 13 more
> {noformat}
> This works in Cassandra 0.8 and 1.0.

--
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

        

[jira] [Commented] (CASSANDRA-4269) Setting column metadata for non-string comparator CFs breaks

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-4269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13281015#comment-13281015 ] 

Jonathan Ellis commented on CASSANDRA-4269:
-------------------------------------------

+1
                
> Setting column metadata for non-string comparator CFs breaks
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-4269
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4269
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.0
>            Reporter: Tyler Hobbs
>            Assignee: Sylvain Lebresne
>            Priority: Trivial
>             Fix For: 1.1.1
>
>         Attachments: 4269.txt
>
>
> For example, use a comparator of LongType and try to create an index on a column named 2 (0x0000000000000002).  You'll get a stracktrace in the logs similar to this:
> {noformat}
> java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input length = 2
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:50)
> 	at org.apache.cassandra.cql3.CFDefinition.<init>(CFDefinition.java:115)
> 	at org.apache.cassandra.config.CFMetaData.updateCfDef(CFMetaData.java:1278)
> 	at org.apache.cassandra.config.CFMetaData.columnMetadata(CFMetaData.java:225)
> 	at org.apache.cassandra.config.CFMetaData.fromThrift(CFMetaData.java:636)
> 	at org.apache.cassandra.thrift.CassandraServer.system_update_column_family(CassandraServer.java:1061)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3436)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3424)
> 	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
> 	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
> 	at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.nio.charset.MalformedInputException: Input length = 2
> 	at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
> 	at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:163)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:120)
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:46)
> 	... 13 more
> {noformat}
> This works in Cassandra 0.8 and 1.0.

--
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

        

[jira] [Updated] (CASSANDRA-4269) Setting column metadata for non-string comparator CFs breaks

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-4269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-4269:
--------------------------------------

    Fix Version/s: 1.1.2
         Assignee: Sylvain Lebresne

related to CASSANDRA-4093?
                
> Setting column metadata for non-string comparator CFs breaks
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-4269
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4269
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.0
>            Reporter: Tyler Hobbs
>            Assignee: Sylvain Lebresne
>            Priority: Trivial
>             Fix For: 1.1.2
>
>
> For example, use a comparator of LongType and try to create an index on a column named 2 (0x0000000000000002).  You'll get a stracktrace in the logs similar to this:
> {noformat}
> java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input length = 2
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:50)
> 	at org.apache.cassandra.cql3.CFDefinition.<init>(CFDefinition.java:115)
> 	at org.apache.cassandra.config.CFMetaData.updateCfDef(CFMetaData.java:1278)
> 	at org.apache.cassandra.config.CFMetaData.columnMetadata(CFMetaData.java:225)
> 	at org.apache.cassandra.config.CFMetaData.fromThrift(CFMetaData.java:636)
> 	at org.apache.cassandra.thrift.CassandraServer.system_update_column_family(CassandraServer.java:1061)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3436)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3424)
> 	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
> 	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
> 	at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.nio.charset.MalformedInputException: Input length = 2
> 	at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
> 	at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:163)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:120)
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:46)
> 	... 13 more
> {noformat}
> This works in Cassandra 0.8 and 1.0.

--
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

        

[jira] [Updated] (CASSANDRA-4269) Setting column metadata for non-string comparator CFs breaks

Posted by "Sylvain Lebresne (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-4269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sylvain Lebresne updated CASSANDRA-4269:
----------------------------------------

    Attachment: 4269.txt

Patch attached. The column names == utf8 assumption was a bit too hardwired.
                
> Setting column metadata for non-string comparator CFs breaks
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-4269
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4269
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.0
>            Reporter: Tyler Hobbs
>            Assignee: Sylvain Lebresne
>            Priority: Trivial
>             Fix For: 1.1.1
>
>         Attachments: 4269.txt
>
>
> For example, use a comparator of LongType and try to create an index on a column named 2 (0x0000000000000002).  You'll get a stracktrace in the logs similar to this:
> {noformat}
> java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input length = 2
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:50)
> 	at org.apache.cassandra.cql3.CFDefinition.<init>(CFDefinition.java:115)
> 	at org.apache.cassandra.config.CFMetaData.updateCfDef(CFMetaData.java:1278)
> 	at org.apache.cassandra.config.CFMetaData.columnMetadata(CFMetaData.java:225)
> 	at org.apache.cassandra.config.CFMetaData.fromThrift(CFMetaData.java:636)
> 	at org.apache.cassandra.thrift.CassandraServer.system_update_column_family(CassandraServer.java:1061)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3436)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$system_update_column_family.getResult(Cassandra.java:3424)
> 	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
> 	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
> 	at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.nio.charset.MalformedInputException: Input length = 2
> 	at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
> 	at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:163)
> 	at org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:120)
> 	at org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:46)
> 	... 13 more
> {noformat}
> This works in Cassandra 0.8 and 1.0.

--
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