Hot questions for Using Cassandra in nodetool

Question:

I am trying to deploy Cassandra cluster on AWS. I followed instructions on http://datastax.com/documentation/cassandra/2.1/cassandra/install/installAMI.html It looks everything is okay, but one node still getting 0 response. After initial script I ran

cassandra-stress write

command on rest two nodes and everything was okay. When I tried to run

nodetool status

command on failed node, I got this error message

nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused'.

I looked for cassandra service and it was down and when I started it and ran again I got this error

error: No nodes present in the cluster. Has this node finished starting up? -- StackTrace -- java.lang.RuntimeException: No nodes present in the cluster. Has this node finished starting up? at org.apache.cassandra.dht.Murmur3Partitioner.describeOwnership(Murmur3Partitioner.java:129) at org.apache.cassandra.service.StorageService.effectiveOwnership(StorageService.java:3763) at org.apache.cassandra.service.StorageService.effectiveOwnership(StorageService.java:104) 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.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.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 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 javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420) at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848) 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.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:744)

and when I ran it again, I got the first error and cassandra service was down. I also changed /etc/cassandra/cassandra.yaml file. I set up seeds, listener address, rpc address, cluster name and token same as the rest of the cluster. Cassandra service goes down, when I run it again. How can I fix it?


Answer:

From this node try to telnet to port 7000 of the other nodes. And from the other nodes try to do the same to this node. Most likely you assigned a different security group to this node and that is why it can't connect to the rest of the cluster.

I set up seeds, listener address, rpc address, cluster name and token same as the rest of the cluster.

P.S. I hope that you did not assign the same token to this node and the listener address you set to the node's own IP, not the other node's IP?

Question:

I'd like to query Cassandra for the information retrieved with a nodetool status command in a Java application. Is this possible or do I have to run nodetool and parse the output?


Answer:

Not possible in current versions to get that information over cql. There will be a ring state in system_views keyspace in future but in current versions its impossible. You have to either use JMX like nodetool or run nodetool and parse the output.