You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Anand Somani <me...@gmail.com> on 2010/11/16 01:32:34 UTC

Getting Exception when doing a range query using token (worked in 6.5 not in 6.6)

Hi

Problem:
     Call - client.get_range_slices(). Using tokens (not keys), fails with
TimedoutException which I think is misleading (Read on)
     Server : Works with 6.5 server, but not with 6.6 or 6.8
     Client: have tried both 6.5 and 6.6

I am getting a TimedoutException when I do a get_range_slices() passing in
tokens (not keys). I only have 1 node at this time. This is working with
6.5, but is broken in 6.6 and 6.8. Basically I see the exception below on
the server side, so not sure how it translates to TimedoutException. I tried
to play with setting the timeout, but keep getting the TimedOutException in
exactly 10 seconds, the set value seems to have no impact.

The exception on the server side:

ERROR [ROW-READ-STAGE:4] 2010-11-15 22:55:39,261 CassandraDaemon.java (line
87) Uncaught exception in thread Thread[ROW-READ-STAGE:4,5,main]
java.lang.AssertionError:
(99318701746171979556028978387039718369,99318701746171979556028978387039718369]
    at
org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1154)
    at
org.apache.cassandra.service.RangeSliceVerbHandler.doVerb(RangeSliceVerbHandler.java:41)
    at
org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:49)
    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:619)


I am doing something wrong or what?

Thanks
Anand

Re: Getting Exception when doing a range query using token (worked in 6.5 not in 6.6)

Posted by Jonathan Ellis <jb...@gmail.com>.
Sorry, my mistake: this is bug
http://issues.apache.org/jira/browse/CASSANDRA-1700.  I've committed
the fix to the 0.6 svn branch; it will be in 0.6.9.

On Mon, Nov 15, 2010 at 7:34 PM, Jonathan Ellis <jb...@gmail.com> wrote:
> TimedOutException means the host that your client is talking to sent
> the request to another machine, which threw the logged exception and
> thus did not reply.
>
> You're doing an illegal query; token-based queries have to be on
> non-wrapping ranges (left token < right token), or a wrapping range of
> (mintoken, mintoken).  This was changed as part of the range scan
> fixes post-0.6.5.
>
> On Mon, Nov 15, 2010 at 6:32 PM, Anand Somani <me...@gmail.com> wrote:
>> Hi
>>
>> Problem:
>>      Call - client.get_range_slices(). Using tokens (not keys), fails with
>> TimedoutException which I think is misleading (Read on)
>>      Server : Works with 6.5 server, but not with 6.6 or 6.8
>>      Client: have tried both 6.5 and 6.6
>>
>> I am getting a TimedoutException when I do a get_range_slices() passing in
>> tokens (not keys). I only have 1 node at this time. This is working with
>> 6.5, but is broken in 6.6 and 6.8. Basically I see the exception below on
>> the server side, so not sure how it translates to TimedoutException. I tried
>> to play with setting the timeout, but keep getting the TimedOutException in
>> exactly 10 seconds, the set value seems to have no impact.
>>
>> The exception on the server side:
>>
>> ERROR [ROW-READ-STAGE:4] 2010-11-15 22:55:39,261 CassandraDaemon.java (line
>> 87) Uncaught exception in thread Thread[ROW-READ-STAGE:4,5,main]
>> java.lang.AssertionError:
>> (99318701746171979556028978387039718369,99318701746171979556028978387039718369]
>>     at
>> org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1154)
>>     at
>> org.apache.cassandra.service.RangeSliceVerbHandler.doVerb(RangeSliceVerbHandler.java:41)
>>     at
>> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:49)
>>     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:619)
>>
>>
>> I am doing something wrong or what?
>>
>> Thanks
>> Anand
>>
>
>
>
> --
> Jonathan Ellis
> Project Chair, Apache Cassandra
> co-founder of Riptano, the source for professional Cassandra support
> http://riptano.com
>



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com

Re: Getting Exception when doing a range query using token (worked in 6.5 not in 6.6)

Posted by Aaron Morton <aa...@thelastpickle.com>.
In this case you could try subtracting 1 from the right hand side token. 

AFAIK the recommended approach to reading all rows in a CF is to use keys on the KeyRange see http://wiki.apache.org/cassandra/FAQ#iter_world

Tokens are more of an internal feature there to support the Hadoop integration http://wiki.apache.org/cassandra/HadoopSupport .

If you want to iterate over all keys in a CF try either using the approach linked above, or try Hadoop. 

Hope that helps. 
Aaron
 

On 16 Nov, 2010,at 03:01 PM, Anand Somani <me...@gmail.com> wrote:

I only have 1 node (not a cluster), so not sure what another machine it is trying to send to? This is a very basic test that I am doing, hence only 1 node.

I use describe_ring to get a list of TokenRanges (1 in this case) and use the end_token and start_token from it to get_range_slices. So what should I be doing instead?

On Mon, Nov 15, 2010 at 5:34 PM, Jonathan Ellis <jb...@gmail.com> wrote:
TimedOutException means the host that your client is talking to sent
the request to another machine, which threw the logged exception and
thus did not reply.

You're doing an illegal query; token-based queries have to be on
non-wrapping ranges (left token < right token), or a wrapping range of
(mintoken, mintoken).  This was changed as part of the range scan
fixes post-0.6.5.


On Mon, Nov 15, 2010 at 6:32 PM, Anand Somani <me...@gmail.com> wrote:
> Hi
>
> Problem:
>      Call - client.get_range_slices(). Using tokens (not keys), fails with
> TimedoutException which I think is misleading (Read on)
>      Server : Works with 6.5 server, but not with 6.6 or 6.8
>      Client: have tried both 6.5 and 66
>
> I am getting a TimedoutException when I do a get_range_slices() passing in
> tokens (not keys). I only have 1 node at this time. This is working with
> 6.5, but is broken in 6.6 and 6.8. Basically I see the exception below on
> the server side, so not sure how it translates to TimedoutException. I tried
> to play with setting the timeout, but keep getting the TimedOutException in
> exactly 10 seconds, the set value seems to have no impact.
>
> The exception on the server side:
>
> ERROR [ROW-READ-STAGE:4] 2010-11-15 22:55:39,261 CassandraDaemon.java (line
> 87) Uncaught exception in thread Thread[ROW-READ-STAGE:4,5,main]
> java.lang.AssertionError:
> (99318701746171979556028978387039718369,99318701746171979556028978387039718369]
>     at
> org.apache.cassandradb.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1154)
>     at
> org.apache.cassandra.service.RangeSliceVerbHandler.doVerb(RangeSliceVerbHandler.java:41)
>     at
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:49)
>     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:619)
>
>
> I am doing something wrong or what?
>
> Thanks
> Anand
>



--
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com


Re: Getting Exception when doing a range query using token (worked in 6.5 not in 6.6)

Posted by Anand Somani <me...@gmail.com>.
I only have 1 node (not a cluster), so not sure what another machine it is
trying to send to? This is a very basic test that I am doing, hence only 1
node.

I use describe_ring to get a list of TokenRanges (1 in this case) and use
the end_token and start_token from it to get_range_slices. So what should I
be doing instead?

On Mon, Nov 15, 2010 at 5:34 PM, Jonathan Ellis <jb...@gmail.com> wrote:

> TimedOutException means the host that your client is talking to sent
> the request to another machine, which threw the logged exception and
> thus did not reply.
>
> You're doing an illegal query; token-based queries have to be on
> non-wrapping ranges (left token < right token), or a wrapping range of
> (mintoken, mintoken).  This was changed as part of the range scan
> fixes post-0.6.5.
>
> On Mon, Nov 15, 2010 at 6:32 PM, Anand Somani <me...@gmail.com>
> wrote:
> > Hi
> >
> > Problem:
> >      Call - client.get_range_slices(). Using tokens (not keys), fails
> with
> > TimedoutException which I think is misleading (Read on)
> >      Server : Works with 6.5 server, but not with 6.6 or 6.8
> >      Client: have tried both 6.5 and 6.6
> >
> > I am getting a TimedoutException when I do a get_range_slices() passing
> in
> > tokens (not keys). I only have 1 node at this time. This is working with
> > 6.5, but is broken in 6.6 and 6.8. Basically I see the exception below on
> > the server side, so not sure how it translates to TimedoutException. I
> tried
> > to play with setting the timeout, but keep getting the TimedOutException
> in
> > exactly 10 seconds, the set value seems to have no impact.
> >
> > The exception on the server side:
> >
> > ERROR [ROW-READ-STAGE:4] 2010-11-15 22:55:39,261 CassandraDaemon.java
> (line
> > 87) Uncaught exception in thread Thread[ROW-READ-STAGE:4,5,main]
> > java.lang.AssertionError:
> >
> (99318701746171979556028978387039718369,99318701746171979556028978387039718369]
> >     at
> >
> org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1154)
> >     at
> >
> org.apache.cassandra.service.RangeSliceVerbHandler.doVerb(RangeSliceVerbHandler.java:41)
> >     at
> >
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:49)
> >     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:619)
> >
> >
> > I am doing something wrong or what?
> >
> > Thanks
> > Anand
> >
>
>
>
> --
> Jonathan Ellis
> Project Chair, Apache Cassandra
> co-founder of Riptano, the source for professional Cassandra support
> http://riptano.com
>

Re: Getting Exception when doing a range query using token (worked in 6.5 not in 6.6)

Posted by Jonathan Ellis <jb...@gmail.com>.
TimedOutException means the host that your client is talking to sent
the request to another machine, which threw the logged exception and
thus did not reply.

You're doing an illegal query; token-based queries have to be on
non-wrapping ranges (left token < right token), or a wrapping range of
(mintoken, mintoken).  This was changed as part of the range scan
fixes post-0.6.5.

On Mon, Nov 15, 2010 at 6:32 PM, Anand Somani <me...@gmail.com> wrote:
> Hi
>
> Problem:
>      Call - client.get_range_slices(). Using tokens (not keys), fails with
> TimedoutException which I think is misleading (Read on)
>      Server : Works with 6.5 server, but not with 6.6 or 6.8
>      Client: have tried both 6.5 and 6.6
>
> I am getting a TimedoutException when I do a get_range_slices() passing in
> tokens (not keys). I only have 1 node at this time. This is working with
> 6.5, but is broken in 6.6 and 6.8. Basically I see the exception below on
> the server side, so not sure how it translates to TimedoutException. I tried
> to play with setting the timeout, but keep getting the TimedOutException in
> exactly 10 seconds, the set value seems to have no impact.
>
> The exception on the server side:
>
> ERROR [ROW-READ-STAGE:4] 2010-11-15 22:55:39,261 CassandraDaemon.java (line
> 87) Uncaught exception in thread Thread[ROW-READ-STAGE:4,5,main]
> java.lang.AssertionError:
> (99318701746171979556028978387039718369,99318701746171979556028978387039718369]
>     at
> org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1154)
>     at
> org.apache.cassandra.service.RangeSliceVerbHandler.doVerb(RangeSliceVerbHandler.java:41)
>     at
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:49)
>     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:619)
>
>
> I am doing something wrong or what?
>
> Thanks
> Anand
>



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com