cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Abhishek Verma (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-9348) Nodetool move output should be more user friendly if bad token is supplied
Date Tue, 22 Mar 2016 00:58:25 GMT

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

Abhishek Verma commented on CASSANDRA-9348:
-------------------------------------------

I am new to Cassandra and came across this while looking for low hanging fruits. 

After digging up, I found that the reason you get this error is because -9223372036854775809
= -2^63-1 is just outside the range of a Long, thus throwing a NumberFormatException (https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java#L283),
which gets thrown as a ConfigurationException, which finally gets thrown as an IOException
and the string "For input string: ". 
I also found that StorageService.move performs out of range checks robustly (https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/service/StorageService.java#L3776).

However, I agree that the displayed error in this case is not very clear. I intend to change
it the Exception message to: "Invalid token: For input string: ....".
If everyone agrees that this is acceptable, I will go ahead and create a patch.

> Nodetool move output should be more user friendly if bad token is supplied
> --------------------------------------------------------------------------
>
>                 Key: CASSANDRA-9348
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9348
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: sequoyha pelletier
>            Priority: Trivial
>              Labels: lhf
>
> If you put a token into nodetool move that is out of range for the partitioner you get
the following error:
> {noformat}
> [architect@md03-gcsarch-lapp33 11:01:06 ]$ nodetool -h 10.11.48.229 -u cassandra -pw
cassandra move \\-9223372036854775809 
> Exception in thread "main" java.io.IOException: For input string: "-9223372036854775809"

> at org.apache.cassandra.service.StorageService.move(StorageService.java:3104) 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

> at java.lang.reflect.Method.invoke(Method.java:606) 
> at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75) 
> at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

> at java.lang.reflect.Method.invoke(Method.java:606) 
> at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279) 
> at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)

> at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)

> at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) 
> at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) 
> at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) 
> at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)

> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
> at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468)

> at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)

> at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)

> at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)

> at java.security.AccessController.doPrivileged(Native Method) 
> at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1427)

> at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848) 
> at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

> at java.lang.reflect.Method.invoke(Method.java:606) 
> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322) 
> at sun.rmi.transport.Transport$1.run(Transport.java:177) 
> at sun.rmi.transport.Transport$1.run(Transport.java:174) 
> at java.security.AccessController.doPrivileged(Native Method) 
> at sun.rmi.transport.Transport.serviceCall(Transport.java:173) 
> at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556) 
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811) 
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670) 
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
> at java.lang.Thread.run(Thread.java:745) 
> {noformat}
> This ticket is just requesting that we catch the exception an output something along
the lines of "Token supplied is outside of the acceptable range" for those that are still
in the Cassandra learning curve.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message