You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Daneel Yaitskov <rt...@gmail.com> on 2013/12/05 18:58:10 UTC

how to find nodes by row key?

Hi,

I study cassandra and want to play with it.
I need to shrink the number of
available row instances.

Next send a search request for it in cqlsh with different consistency
levels.
To observe behavior I need to know which instance to take down.


I found cassandra-cli command list.

this command works
$ list ticks  limit 4;

but next doesn't
$ list ticks[1:'FEURUS':'c'];
list ticks[1:'FEURUS':'c'];
Syntax error at position 21: mismatched input ':' expecting ']'

As you see there is a composite key consisting of 3 columns.

I can use assume command to change key view.
But none of them are looks similar to values in the token column of
nodetool ring  command.

The best solution would be get IP address (node UUID) directly by a human
readable structured  row key.


My cassandra cluster has version 2.0.3.
-- 
Daneel S. Yaitskov

Re: how to find nodes by row key?

Posted by Daneel Yaitskov <rt...@gmail.com>.
Thanks Rob,

There is one thing bothers me.
I have complex row key.

$ create table b (x int, s text, ((x,s)) primary key);

In cqlsh I cannot fill row key partially:

$ insert into b (x) values(4);
Bad Request: Missing mandatory PRIMARY KEY part s

But nodetool can find hosts by incomplete key
$ nodetool -h cas3 getendpoints anti_portal b 12
192.168.4.4
192.168.4.5
192.168.4.6


I found that columns are separated by ":".
And If I pass to many elements then the error happens.

$ nodetool -h cas3 getendpoints anit_portal b 12:dd:dd
Exception in thread "main"
org.apache.cassandra.serializers.MarshalException: unable to make int from
'12:dd:dd'
    at
org.apache.cassandra.db.marshal.Int32Type.fromString(Int32Type.java:69)
    at
org.apache.cassandra.service.StorageService.getNaturalEndpoints(StorageService.java:2495)
    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.GeneratedMethodAccessor7.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
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.GeneratedMethodAccessor12.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:744)
Caused by: java.lang.NumberFormatException: For input string: "12:dd:dd"
    at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at
org.apache.cassandra.db.marshal.Int32Type.fromString(Int32Type.java:65)
    ... 36 more




On Thu, Dec 5, 2013 at 10:19 PM, Robert Coli <rc...@eventbrite.com> wrote:

> On Thu, Dec 5, 2013 at 9:58 AM, Daneel Yaitskov <rt...@gmail.com>wrote:
>
>> The best solution would be get IP address (node UUID) directly by a human
>> readable structured  row key.
>>
>
> nodetool getendpoints
>
> exposes a JMX endpoint which does that. I'm not clear on whether that is
> sufficient for your needs.
>
> =Rob
>



-- 
Daneel S. Yaitskov

Re: how to find nodes by row key?

Posted by Robert Coli <rc...@eventbrite.com>.
On Thu, Dec 5, 2013 at 9:58 AM, Daneel Yaitskov <rt...@gmail.com>wrote:

> The best solution would be get IP address (node UUID) directly by a human
> readable structured  row key.
>

nodetool getendpoints

exposes a JMX endpoint which does that. I'm not clear on whether that is
sufficient for your needs.

=Rob