On Mon, Nov 22, 2010 at 1:26 PM, Edward Capriolo <edlinuxg...@gmail.com>wrote:

> For cassandra all writes must be transmitted to all replicas.
>

I thought that was only true if you set the number of replicas required for
the write to the same as the number of replicas.

Further, we've established in this thread that even if you set W=3 when
there are 3 replicas, if you do write to a replica that is the 'primary
cache' as in CASSANDRA-1314, and it "fails" to write the other replicas, it
will still eventually propagate to the other replicas. Which means if you
read from the memory-cache after your write, the data would not be present,
until later when replication caused it to appear.

In other words given N=3, W=3, R=1, that new patch, and the following
configuration:

server-A copy1 (preferred memory cache)
server-B copy2
server-C copy3

Could you see this as a client?

1) read returns "Foo=Bar" from copy1 memory (preferred)
2) write "Foo=New" copy1,copy2,copy3 .. copy2 accepts, copy1/3 fail or
timeout, client receives failure
3) read returns "Foo=Bar" from copy1 memory (preferred)
4) read returns "Foo=New", because copy2 was finally propagated to 1/3

It seems like you could...

Though I understand that this is already a separate point in my original
email, so perhaps you only intended to point out that the CASSANDRA-1314
change simply solves the memory overhead issue -- while consistency
differences remain the same.

Reply via email to