What your describing is a distributed transaction? Generally strong
consistency is always associated with doing transactional writes where you
never see the results of a failed write on a subsequent read no matter what
happens. Cassandra has no notion of rollback. That is why no combination
will give you strong consistency. The idea is you re-try the failed write
and eventually the system would have gotten rid of the previous stale write.

Avinash

On Thu, Apr 8, 2010 at 8:29 AM, Jeremy Dunck <jdu...@gmail.com> wrote:

> On Thu, Apr 8, 2010 at 7:16 AM, Gary Dusbabek <gdusba...@gmail.com> wrote:
> > On Thu, Apr 8, 2010 at 02:55, Paul Prescod <p...@ayogo.com> wrote:
> >> In this¹ debate, there seemed to be consensus on the following fact:
> >>
> >> "In Cassandra, say you use N=3, W=3 & R=1. Let’s say you managed to
> >> only write to replicas A & B, but not C. In this case Cassandra will
> >> return an error to the application saying the write failed- which is
> >> acceptable given than W=3. But Cassandra does not cleanup/rollback the
> >> writes that happened to A & B."
> >>
> >
> > correct: no rolling back.  Cassandra does go out of its way to make
> > sure the cluster is healthy enough to begin the write though.
>
> I think the general answer here is don't use R=1 if you can't tolerate
> inconsistency?  Still the point of confusion -- if W=3 and the write
> succeeds on 2 nodes but fails the 3rd, the write fails (to the
> updating client), but is the data on the two successful nodes still
> readable (i.e. reading from what was actually a failed write)?
>

Reply via email to