News for hackers. Stuff that matters.
Re:Cassandra at Apple: 1000s of Clusters, 300k Nodes, 100 PB by _benedict on Sunday October 09, 2022 @12:46PM (#33142858)
No, that is literally impossible.

If value 2 is newer than value 1, value 1 will never overwrite value 2. If a client reads value 2 at QUORUM then it will always be seen by all future queries.

Re:Cassandra at Apple: 1000s of Clusters, 300k Nodes, 100 PB by skyde on Sunday October 09, 2022 @07:08PM (#33146166)
Client À write value 1 on 2 of 3 node with timestamp=3

then later client B write value 2 on 2 of the 3 node with timestamp=1

then read repair happen and (value=1 timestamp=3) is written to all 3 nodes.

this is only one of many scenarios where this stupid design fail.

Re:Cassandra at Apple: 1000s of Clusters, 300k Nodes, 100 PB by _benedict on Monday October 10, 2022 @01:42AM (#33148162)
Client B’s write will only be successfully read from 1 of the nodes it wrote to, and read-repair only runs on QUORUM reads. So, no, it will not be possible to read value 2 for 5m - it will never be visible to operations at QUORUM.

This would have been a valid criticism of LWW.

Re:Cassandra at Apple: 1000s of Clusters, 300k Nodes, 100 PB by skyde on Monday October 10, 2022 @02:24PM (#33154785)
Since "client B write" was successfully written on 2 of the 3 nodes. Any read request that read only from 2 of the 3 nodes instead of using quorum read, will be able to see what Client B wrote until it magically disappears.

Quorum Read-repair is only one reason for why the value would randomly disappear. Another one is periodic anti Entropy repair!

Re:Cassandra at Apple: 1000s of Clusters, 300k Nodes, 100 PB by _benedict on Monday October 10, 2022 @03:52PM (#33155720)
No, it won’t. Successfully written does not mean what you think it means. If there is “newer” (by timestamp) data on disk or in memtable then it will not be returned to a client, regardless of which order that data arrived. It is unlikely even to be written to disk (except the commit log).

Since at least one of those nodes has the “newer” value, only one node can serve this “older” value