Alain thank you for all the clarification, I understand exactly what you meant now... and as a result am just as confused as you are :)
What version of Cassandra are you using? Can you share the important parts of your config? (you double checked that your replication factor is set on all 3 to "3"?) Also out of curiosity, if you keep querying for up to 5 mins (say every 10 seconds) do counter1, 2 and 3 still show the same wrong values for getValue or do the values eventually converge on the correct amounts? (I assume 5mins is a long enough window to test, maybe I'm wrong and another Cassandra dev can correct me here). -R On Mon, Nov 7, 2011 at 9:57 AM, Alain RODRIGUEZ <arodr...@gmail.com> wrote: > I retried it after restarting all the servers. > > I still have wrong results (I simulated an event 5 times and it was > counted 3 times by some counters 4 or 5 times by others. > > What I meant by "but now every request returns me always the same count > value..." will be easier to explain with an example : > > event 1: > > counter1.increment > counter2.increment > counter3.increment > > . > . > . > > event 5: > > counter1.increment > counter2.increment > counter3.increment > > Show results : > > counter1.getValue = returns 4 > counter2.getValue = returns 3 > counter3.getValue = returns 5 > > counter1.getValue = returns 5 > counter2.getValue = returns 3 > counter3.getValue = returns 5 > > counter1.getValue = returns 4 > counter2.getValue = returns 4 > counter3.getValue = returns 5 > > ... > > So I've got wrong values, and not always the same ones. In my previous > email I tried to tell you by saying "but now every request returns me > always the same count value..." that I had all the time the same wrong > values, let us say : > > counter1.getValue = returns 4 > counter2.getValue = returns 3 > counter3.getValue = returns 5 > > counter1.getValue = returns 4 > counter2.getValue = returns 3 > counter3.getValue = returns 5 > > counter1.getValue = returns 4 > counter2.getValue = returns 3 > counter3.getValue = returns 5 > > But that is not true, I still have some "random" wrong values, maybe > haven't I query to get counter values often enough to see it last time. > > Sorry of not being clearer, that is not easy to explain, neither to > understand for me. > > Thanks for help. > > Alain > > > 2011/11/7 Riyad Kalla <rka...@gmail.com> > >> Alain, >> >> When you tried CL.All was that only after you had made the change of >> ReplicationFactor=3 and restarted all the servers? >> >> If you hadn't restarted the servers with the new RF, I am not sure that >> CL.All would have the intended effect. >> >> Also, I wasn't sure what you meant by "but know every request returns me >> always the same count value..." -- didn't want the requests to always >> return you the same values? >> >> Or maybe you are saying that it always returns the same *wrong* value? >> Like you do: >> >> counter.increment (v=1) >> counter.increment (v=2) >> counter.increment (v=3) >> >> counter.getValue = returns 7 >> counter.getValue = returns 7 >> counter.getValue = returns 7 >> >> or something inconsistent like that? >> >> On Mon, Nov 7, 2011 at 9:09 AM, Alain RODRIGUEZ <arodr...@gmail.com>wrote: >> >>> I've tried with CL.All, but it doesn't wotk better. I still have strange >>> values (between 4 and 10 events counted instead of 10) but know every >>> request returns me always the same count value... >>> >>> It's very strange. >>> >>> Any other idea ? >>> >>> Alain >>> >>> >>> 2011/11/7 Riyad Kalla <rka...@gmail.com> >>> >>>> Alain, >>>> >>>> Try using a CL of 3 or "ALL" and see if that the problem goes away. >>>> >>>> Your replication factor (as I just learned) dictates how many nodes >>>> each piece of data is replicated to; by using a RF of 3 you are saying >>>> "replicate all my data to all my nodes" (in this case counters). >>>> >>>> This doesn't happen immediately, but you can *force* it to happen on >>>> write by specifying a CL of "ALL". If you specify "1" then your counter >>>> value is written to one member of the ring, then your command returns. >>>> >>>> If you keep querying you will bounce around your ring, reading the >>>> values from the different nodes until a future date at *which point* all >>>> the values will likely agree. >>>> >>>> If you keep all your code you have now exactly the same, just change >>>> the code at the end where you read the counter value back, to keep reading >>>> the counter value back every second for 60 seconds and see if all the >>>> values eventually match up -- they should (as the counter value is >>>> replicated to all the nodes and their old values discarded). >>>> >>>> -R >>>> >>>> >>>> On Mon, Nov 7, 2011 at 8:15 AM, Alain RODRIGUEZ <arodr...@gmail.com>wrote: >>>> >>>>> Hi, >>>>> >>>>> I trying to switch from a RF = 1 to a RF = 3, but I get wrong values >>>>> from counters when doing so... >>>>> >>>>> I got a CF that contains many counters of some events. When I'm at RF >>>>> = 1 and simulate 10 events, they are well counted. >>>>> However, when I switch to a RF = 3, my counter show a wrong value that >>>>> sometimes change when requested twice (it can return 7, then 5 instead of >>>>> 10 all the time). >>>>> >>>>> I first thought that it was a problem of CL because I seem to remember >>>>> that I read once that I had to use CL.One for reads and writes with >>>>> counters. So I tried with CL.One, without success... >>>>> >>>>> What am I doing wrong ? Is that some precaution to take when >>>>> replicating counters ? >>>>> >>>>> Alain >>>>> >>>> >>>> >>> >> >