I have tried it with RF=1 and 2 nodes and the result was the same. 
In this case I am not able to query anything, regardless the consistency level.

I have conducted some more tests with 4 nodes and RF=2 and before each test I 
also completely cleared all datafiles (data/commit/saved_cache). 
Each time I do this the nodes get different locations on the ring and the 
noticed behavior is different (but similar) each time.
I have added the details for 2 concrete scenario;

----
1) clear all 3 data directories for all nodes
2) startup all nodes; the ring is;

# bin/nodetool -h 172.16.21.12 ring
Address       Status     Load          Range                                    
  Ring
                                       81296677393575658129031223607666487650
172.16.21.12  Up         489 bytes     61644956546475371096781179489550878842   
  |<--|
172.16.21.14  Up         489 bytes     63811055530446251457866768401307252614   
  |   |
172.16.21.13  Up         489 bytes     71622328744148061175473750202165524046   
  |   |
172.16.21.11  Up         489 bytes     81296677393575658129031223607666487650   
  |-->|

3) I use the following ColumnFamily     <ColumnFamily Name="Customers" 
ColumnType="Super" CompareWith="AsciiType"/>
And add the following rows (key and values utf8 strings)
Customer['1'].simple.id='1'
Customer['2'].simple.id='2'
Customer['3'].simple.id='3'
Customer['4'].simple.id='4'

4) Iterating over the columns now yield;
        Iterating Nodes .11 thru.13 ==> all rows, regardless of consistency 
level
        Iterating Node.14           ==> only row '3' and '4' with consistency 
level ONE, all rows with consistency level All

----
Repating all process steps again yields the following ring and iteration results
# bin/nodetool -h 172.16.21.11 ring
Address       Status     Load          Range                                    
  Ring
                                       157208721428268855331814529932509412075
172.16.21.11  Up         489 bytes     18662665007498667259581716616851966032   
  |<--|
172.16.21.13  Up         489 bytes     125997322478065775200568923383951796531  
  |   |
172.16.21.12  Up         489 bytes     148125235552363592916130178190645177045  
  |   |
172.16.21.14  Up         489 bytes     157208721428268855331814529932509412075  
  |-->|

        Iterating Nodes .11 .12 .14 ==> no data with consistency level One, all 
rows with consistency level All
        Iterating Node .13          ==> only row '3' and '4' with consistency 
level ONE, all rows with consistency level All

I appears to me there is an inconsistency somewhere, I hope this info helps.

Eric


-----Original Message-----
From: Jonathan Ellis [mailto:jbel...@gmail.com] 
Sent: woensdag 10 november 2010 17:48
To: user
Subject: Re: iteration does not yield all data with consistency ONE

Interesting.  Does it simplify further to RF=1 and 2 nodes?

On Wed, Nov 10, 2010 at 8:58 AM, Eric van Orsouw
<eric.van.ors...@eventis.nl> wrote:
> No, all nodes were up and running while the single key was inserted.
> The insert however was with consistency One. I assume however that the 
> replicas are still written in this case.
> It is btw also very reproducible.
>
> -----Original Message-----
> From: Jonathan Ellis [mailto:jbel...@gmail.com]
> Sent: woensdag 10 november 2010 15:44
> To: user
> Subject: Re: iteration does not yield all data with consistency ONE
>
> Was the node that should have the other replica of this row down when
> it was inserted?
>
> On Wed, Nov 10, 2010 at 6:08 AM, Eric van Orsouw
> <eric.van.ors...@eventis.nl> wrote:
>>
>> Hello,
>>
>>
>>
>> We have a cluster of 4 nodes (0.6.6) and use the random partitioner and a 
>> replication of 2.
>>
>> When I insert a number of rows I can always retrieve them by their explicit 
>> id (get_range_slices("<key>","", 1).
>>
>> Playing with consistency levels and temporarily shutting down a Cassandra 
>> node all yields the expected result.
>>
>>
>>
>> However when I use get_range_slices("","", n) to iterate over all rows, I 
>> sometimes don't get anything (depending on the node).
>>
>>
>>
>> I then reduced the problem to inserting just a single row.
>>
>> Specifically, the 'iteration' only seems to succeed when I issue the request 
>> to the node that contains the first copy.
>>
>> I Discovered that when I iterate using a consistency level of Quorum/All the 
>> iteration always succeeds and I properly get the one row.
>>
>>
>>
>> So a solution would be to always use consistency level One/All but that has 
>> a performance penalty.
>>
>>
>>
>> Can anyone explain why iterating using get_range_slices("","",n) does not 
>> always function with consistency level One on all nodes?
>>
>>
>>
>> Thanks,
>>
>> Eric
>>
>>
>>
>> P.S. To rule out any discussion on whether or not to use iteration in the 
>> first place, we only plan to use it for backup and periodic cleanup cycles.
>
>
> --
> 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

Reply via email to