> 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