> In a relatively untroubled cluster, even timed out writes go through,
> provided no messages are dropped.

This all depends of your definition of "untroubled" cluster, but to be
clear, in a cluster where a node dies (which for Cassandra is not
considered abnormal and will happen to everyone no matter how good
your monitoring is), you have a good change to get TimeoutExceptions
on counter writes while the other nodes of the cluster haven't
detected the failure (which can take a few seconds) AND those writes
won't get through. The fact that Cassandra logs dropped messages or
not has nothing to do with that.

> We have 100% consistency on our production servers as we don't
> see messages being dropped on our servers.

Though I'm happy for you that you achieve 100% consistency, I want to
re-iter that not seeing any log of messages being dropped does not
guarantee that all counter writes did went true: the ones that timeout
may or may have been persisted.

--
Sylvain


> Though as you mention, there would be no way to "repair" your dropped 
> messages .
>
> On Tue, Sep 25, 2012 at 6:57 PM, Sylvain Lebresne <sylv...@datastax.com> 
> wrote:
>>> So general question, should I rely on Counters if I want 100% accuracy?
>>
>>
>> No.
>>
>>  Even not considering potential bugs, counters being not idempotent, if you
>> get a TimeoutException during a write (which can happen even in relatively
>> normal conditions), you won't know if the increment went in or not (and you
>> have no way to know unless you have an external way to check the value).
>> This is probably fine if you use counters for say real-time analytics, but
>> not if you use 100% accuracy.
>>
>> --
>> Sylvain

Reply via email to