That's the price you pay for (a) eventual consistency in general and
(b) doing read repair in the background specifically.  Cassandra also
has functionality (called "strong read") to do a quorum read in the
foreground and repair if necessary but that is not exposed in Thrift
yet -- but even with that there are scenarios where you could get back
"no data" for a write that has been acked.  The only way to avoid it
entirely is to require acking all writes from all replicas and
checking all replicas on all reads, which (in a large cluster) is
going to hurt from the availability standpoint.  Most apps are ok
trading off some consistency for availability.

-Jonathan

On Mon, May 18, 2009 at 12:24 PM, Chris Goffinet <goffi...@digg.com> wrote:
> Scenario: if i setup a 2 node cluster, with replicationfactor of 2. Inserted
> a new key (1) into a table. Its replicated to both nodes. I shutdown node
> (2), delete all data, then bring it back up. I noticed that if i make a
> request to that node the first time for that key, it will return back an
> empty result (was using get_slice), then that node will pull the data from
> other node. On next request to that node its there. How does one really know
> if the data isn't there (should I retry) vs it was never there to begin
> with?
>
> ---
> Chris Goffinet
> goffi...@digg.com
>
>
>
>
>
>

Reply via email to