You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Brandon Williams (JIRA)" <ji...@apache.org> on 2012/10/09 16:17:03 UTC

[jira] [Resolved] (CASSANDRA-4780) Not informative error reporting when calling getNaturalEndpoints for a CF without key_validation_class

     [ https://issues.apache.org/jira/browse/CASSANDRA-4780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brandon Williams resolved CASSANDRA-4780.
-----------------------------------------

    Resolution: Not A Problem

The RMI error isn't really something we can fix, and the second (actual) error should have been the clue that you needed to convert your key to hex, since by default it would be BytesType.  You'd get the same error trying to insert/get in any thrift client that didn't handle the marshaling for you.
                
> Not informative error reporting when calling getNaturalEndpoints for a CF without key_validation_class
> ------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-4780
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4780
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.5
>            Reporter: Ivan Sobolev
>            Priority: Minor
>
> While trying to call getNaturalEndpoints(String,String,String) via jmx(jconsole), got the following:
> {code}Problem invoking getNaturalEndpoints: java.rmi.UnmarshalException: Error unmarshaling return; 
> nested exception is: java.lang.ClassNotFoundException: org.apache.cassandra.db.marshal.MarshalException (no security manager: RMI class loader disabled){code}
> Googling suggested to try out different classpath mysteries[1]
> Doing that from the nodetool was a bit more informative though:
> {code}Exception in thread "main" org.apache.cassandra.db.marshal.MarshalException: cannot parse '28589689-0bf0-9ebf-e405-d8f1d798cd7d' as hex bytes
>         at org.apache.cassandra.db.marshal.BytesType.fromString(BytesType.java:74)
>         at org.apache.cassandra.service.StorageService.getNaturalEndpoints(StorageService.java:2131)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:93)
>         at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:27)
>         at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:208)
>         at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:120)
>         at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:262)
>         at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
>         at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
>         at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
>         at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
>         at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
>         at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
>         at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
>         at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:303)
>         at sun.rmi.transport.Transport$1.run(Transport.java:159)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
>         at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
>         at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
>         at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
>         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.lang.NumberFormatException: Non-hex characters in 28589689-0bf0-9ebf-e405-d8f1d798cd7d
>         at org.apache.cassandra.utils.Hex.hexToBytes(Hex.java:60)
>         at org.apache.cassandra.db.marshal.BytesType.fromString(BytesType.java:70)
> {code}
> The missing bit:
> {code}
> update column family xxx with key_validation_class=UTF8Type;{code}
> Goals of the ticket:
> * Ensure that message from exception will properly pop up to the JMX client
> * Guys googling the same problem will have a direction
> ___________________________________________________________
> [1] forum.springsource.org/showthread.php?25937-RMI-class-loader-disabled

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira