Isn't it cheaper to retry the mutation on _any exception_ than to have a
transaction in place for the majority of non failing writes?

The special case to be considered is obviously counters which are not
idempotent

https://issues.apache.org/jira/browse/CASSANDRA-2495



On Sat, Aug 25, 2012 at 4:38 AM, Russell Haering
<russellhaer...@gmail.com>wrote:

> The "issue" is that it is possible for a quorum write to return an
> error, but for the result of the write to still be reflected in the
> view seen by the client. There is really no performant way around this
> (although reading at ALL can make it much less frequent). Guaranteeing
> complete success or failure would (barring a creative solution I'm
> unaware of) require a transactional commit of some sort across the
> replica nodes for the key being written to. The performance tradeoff
> might be desirable under some circumstances, but if this is a
> requirement you should probably look at other databases.
>
> Some good rules to play by (someone correct me if these aren't 100% true):
>
> 1. For writes to a single key, an UnavailableException means the write
> failed totally (clients will never see the data you wrote)
> 2. For writes to a single key, a TimedOutException means you cannot
> know whether the write succeeded or failed
> 3. For writes to multiple keys, either an UnavailableException or a
> TimedOutException means you cannot know whether the write succeeded or
> failed.
>
> -Russell
>
> On Sat, Aug 25, 2012 at 12:17 AM, Guillermo Winkler
> <gwink...@inconcertcc.com> wrote:
> > Hi Philip,
> >
> > From http://wiki.apache.org/cassandra/ArchitectureOverview
> >
> > Quorum write: blocks until quorum is reached
> >
> > By my understanding if you _did_ a quorum write it means it successfully
> > completed.
> >
> > Guille
> >
> >
> >> I *think* we're saying the same thing here. The addition of the word
> >> "successful" (or something more suitable) would make the documentation
> more
> >> precise, not less.
>

Reply via email to