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