cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Ellis (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CASSANDRA-348) Range scan over two nodes returns wrong data
Date Fri, 07 Aug 2009 16:53:14 GMT

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

Jonathan Ellis updated CASSANDRA-348:
-------------------------------------

    Attachment: 348-2.patch

This patch fixes the main problem.  There are two things going on in this patch:

 - we switch from trying to get the next endpoint by increasing offset to asking tokenMetadata
for "the next one."  this will always be correct where the offset approach will not (usually
you want offset to just be 1, but sometimes you have to keep increasing it if no results are
found but the range is still not finished)
 - we merge results differently when the endpoint responsible for where the ring wraps is
involved, since that endpoint can hold keys from both the beginning and end of the range.

> Range scan over two nodes returns wrong data
> --------------------------------------------
>
>                 Key: CASSANDRA-348
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-348
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Mark Robson
>         Attachments: 348-2.patch, 348.diff, LoadAndScan.py, setup.cas
>
>
> I've got two nodes with tokens 00000000 and 88888888. I add 16 rows in which are spread
over them, then do a key range scan.
> I can scan part of the range successfully, but if I try to scan the entire range of keys
(0-f) then I get unexpected results
> ./Cassandra-remote -h localhost:9160 get_key_range Keyspace1 Standard1 0 31 1000
> ['00', '01', '10', '11', '20', '21', '30', '31']
> ./Cassandra-remote -h localhost:9160 get_key_range Keyspace1 Standard1 3 81 1000
> ['30', '31', '40', '41', '50', '51', '60', '61', '70', '71', '80', '81']
>  ./Cassandra-remote -h localhost:9160 get_key_range Keyspace1 Standard1 7 b1 1000
> ['70', '71', '80', '81', '90', '91', 'a0', 'a1', 'b0', 'b1']
> ./Cassandra-remote -h localhost:9160 get_key_range Keyspace1 Standard1 a g 1000
> ['a0', 'a1', 'b0', 'b1', 'c0', 'c1', 'd0', 'd1', 'e0', 'e1', 'f0', 'f1']
> All of which returned as I expected.
> But when I range scan the whole lot (0-g) then I get:
> ./Cassandra-remote -h localhost:9160 get_key_range Keyspace1 Standard1 0 g 1000
> [ '00',
>   '90',
>   '91',
>   'a0',
>   'a1',
>   'b0',
>   'b1',
>   'c0',
>   'c1',
>   'd0',
>   'd1',
>   'e0',
>   'e1',
>   'f0',
>   'f1']
> Where have 01-81 gone?
> I'll attach the data loading script.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message