If that's the case, your client is being misleading.  Cassandra
distinguishes between Unavailable (we knew we couldn't achieve CL
before we started, and nothing changed) and TimedOut (didn't get reply
in a timely fashion; it may or may not have gone through).

TimedOut != Failed.

On Fri, Jul 22, 2011 at 11:08 AM, Yang <teddyyyy...@gmail.com> wrote:
> btw, this "issue" of  not knowing whether a write is persisted or not
> when client reports error, is not limited to counters,  for regular
> columns, it's the same: if client reports write failure, the value may
> well be replicated to all replicas later.  this is even the same with
> all other systems: Zookeeper, Paxos, ultimately due to the FLP
> theoretical result of "no guarantee of consensus in async systems"
>
>
> ---------- Forwarded message ----------
> From: Sylvain Lebresne <sylv...@datastax.com>
> Date: Fri, Jul 22, 2011 at 8:03 AM
> Subject: Re: Counter consistency - are counters idempotent?
> To: user@cassandra.apache.org
>
>
> On Fri, Jul 22, 2011 at 4:52 PM, Kenny Yu <kenny...@knewton.com> wrote:
>> As of Cassandra 0.8.1, are counter increments and decrements idempotent? If,
>> for example, a client sends an increment request and the increment occurs,
>> but the network subsequently fails and reports a failure to the client, will
>> Cassandra retry the increment (thus leading to an overcount and inconsistent
>> data)?
>> I have done some reading and I am getting conflicting sources about counter
>> consistency. In this source
>> (http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/clarification-of-the-consistency-guarantees-of-Counters-td6421010.html),
>> it states that counters now have the same consistency as regular
>> columns--does this imply that the above example will not lead to an
>> overcount?
>
> That email thread was arguably a bit imprecise with its use of the
> word 'consistency'
> but what it was talking about is really consistency level. That is, counter
> supports all the usual consistency levels (ONE, QUORUM, ALL, LOCAL_QUORUM,
> EACH_QUORUM) excepted ANY.
> Counter are still not idempotent. And just a small precision, if you
> get a TimeoutException,
> Cassandra never retry the increment on it's own (your sentence
> suggests it does),
> but you won't know in that case if the increment was persisted or not,
> and thus you
> won't know if you should retry or not. And yes, this is still a
> limitation of counters.
>
>
>> If counters are not idempotent, are there examples of effective uses of
>> counters that will prevent inconsistent counts?
>> Thank you for your help.
>



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

Reply via email to