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.