Re: Consistency model

2011-04-18 Thread Peter Schuller
> Does anyone have any intuition about whether this will happen with > consistency_level=ALL?  I will try it today, but I'd like to know what the > expected behavior is.  It seems like it would not happen in this case. Assuming my understanding is correct (see my comment in the JIRA ticket), then

Re: Consistency model

2011-04-18 Thread James Cipar
That's what I thought was happening, yes. A careful reading of the documentation suggests that this is correct behavior. Tyler says this can also occur because of a TimedOutException on the writes. This worries me because TimedOutExceptions are so frequent (at least for my test cluster), ther

Re: Consistency model

2011-04-17 Thread William Oberman
James: I feel like I understand what's going on in your code now based on this discussion, and I'm ok with the fact that DURING a QW you can get "transitional" results from a QR in another process (or either the before or after state of the QW). But once the QW succeeds, you must get the new value

Re: Consistency model

2011-04-17 Thread Milind Parikh
Same process or not: only successful QR reads after successful QW will behave with this guarantee. /*** sent from my android...please pardon occasional typos as I respond @ the speed of thought / On Apr 17, 2011 10:04 AM, "James Cipar" wrote: > For a

Re: Consistency model

2011-04-17 Thread James Cipar
> For a second, I thought this thread was saying I could see value(s) < new > value(s) within the same process on the second read at quorum That's exactly what I'm saying. Within a single process I see this behavior, when reading with consistency_level=QUORUM Read value 1 Read value 2 Read val

Re: Consistency model

2011-04-17 Thread William Oberman
Cool, that is exactly what I was thinking/expecting, and I feel better about the assumptions I've used in my refactor to move from MySQL -> cassandra. I basically gave up on trying to force my code to assume (even at quorum): -read value(s) for key from cassandra -update/add/delete columns for key

Re: Consistency model

2011-04-17 Thread Milind Parikh
William The issue is regarding whether you will see A or B; with any guarantee of either. The discussion implies no; until the QW is complete. /*** sent from my android...please pardon occasional typos as I respond @ the speed of thought / On Apr 17, 20

Re: Consistency model

2011-04-17 Thread Milind Parikh
Successful reads after a successful write @Q have the property of once the read is seen @ one Q, the same read will be seen at any other Q. All others are details that will change with implementation; but,imo, are not bugs. James: in your case, I would think that you have not completed a successf

Re: Consistency model

2011-04-17 Thread William Oberman
I'm pretty new to all of this, and I'm in the process of building my mental model of Cassandra, but I'm still feeling better about this thread. The way I figure it: 1. I'm trying to mutate the state of a key's column from A to B from a thread somewhere (quorum) 2. I'm trying to read the state of a

Re: Consistency model

2011-04-17 Thread James Cipar
The bug report suggests a test with write_consistency=ONE, read_consistency=QUORUM. If one thread is writing at consistency level ONE, and the other is reading at QUORUM, I wouldn't expect consistent reads. The problem I was talking about is when both reads and writes are using QUORUM. Also,

Re: Consistency model

2011-04-17 Thread Sean Bridges
On Sun, Apr 17, 2011 at 6:42 AM, William Oberman wrote: > At first I was concerned and was going to +1  on a fix, but I think I was > confused on one detail and I'd like to confirm it. > -An unsuccessful write implies readers can see either the old or new value Yes. Fixing CASSANDRA-2494 will si

Re: Consistency model

2011-04-17 Thread Sean Bridges
Thanks Jonathan, I've filed a bug for this, https://issues.apache.org/jira/browse/CASSANDRA-2494 Sean On Sat, Apr 16, 2011 at 10:53 PM, Jonathan Ellis wrote: > Tyler is correct, because Cassandra doesn't wait until repair writes > are acked before the answer is returned. This is something we ca

Re: Consistency model

2011-04-17 Thread James Cipar
I'm pretty new to Cassandra, but I've also written a client in C++ using the thrift API directly. From what I've seen, wrapping writes in a retry loop is pretty much mandatory because if you are pushing a lot of data around, you're basically guaranteed to have TimedOutExceptions. I suppose wha

Re: Consistency model

2011-04-17 Thread William Oberman
At first I was concerned and was going to +1 on a fix, but I think I was confused on one detail and I'd like to confirm it. -An unsuccessful write implies readers can see either the old or new value ? The trick is using a library, it sounds like there is a period of time a write is unsuccessful b

Re: Consistency model

2011-04-16 Thread Jonathan Ellis
Tyler is correct, because Cassandra doesn't wait until repair writes are acked before the answer is returned. This is something we can fix. On Sun, Apr 17, 2011 at 12:05 AM, Sean Bridges wrote: > Tyler, your answer seems to contradict this email by Jonathan Ellis > [1].  In it Jonathan says, > >

Re: Consistency model

2011-04-16 Thread Sean Bridges
Tyler, your answer seems to contradict this email by Jonathan Ellis [1]. In it Jonathan says, "The important guarantee this gives you is that once one quorum read sees the new value, all others will too. You can't see the newest version, then see an older version on a subsequent write [sic, I a

Re: Consistency model

2011-04-16 Thread Tyler Hobbs
Here's what's probably happening: I'm assuming RF=3 and QUORUM writes/reads here. I'll call the replicas A, B, and C. 1. Writer process writes sequence number 1 and everything works fine. A, B, and C all have sequence number 1. 2. Writer process writes sequence number 2. Replica A writes suc

Re: Consistency model

2011-04-16 Thread James Cipar
Here it is. There is some setup code and global variable definitions that I left out of the previous code, but they are pretty similar to the setup code here. import pycassa import random import time consistency_level = pycassa.cassandra.ttypes.ConsistencyLevel.QUORUM durat

Re: Consistency model

2011-04-16 Thread Tyler Hobbs
James, Would you mind sharing your reader process code as well? On Fri, Apr 15, 2011 at 1:14 PM, James Cipar wrote: > I've been experimenting with the consistency model of Cassandra, and I > found something that seems a bit unexpected. In my experiment, I have 2 > processes, a reader and a wri

Re: Consistency model

2011-04-16 Thread Sean Bridges
If you are reading and writing at quorum, then what you are seeing shouldn't happen. You shouldn't be able to read N+1 until N+1 has been committed to a quorum of servers. At this point you should not be able to read N anymore, since there is no quorum that contains N. Dan - I think you are righ

RE: Consistency model

2011-04-15 Thread Dan Hendry
So Cassandra does not use an atomic commit protocol at the cluster level. Strong consistency on a quorum read is only guaranteed *after* a successful quorum write. The behaviour you are seeing is possible if you are reading in the middle of a write or the write failed (which should be reported to y