You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by Apache Wiki <wi...@apache.org> on 2010/01/06 22:32:00 UTC

[Cassandra Wiki] Update of "HintedHandoff" by JonathanEllis

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for change notification.

The "HintedHandoff" page has been changed by JonathanEllis.
http://wiki.apache.org/cassandra/HintedHandoff

--------------------------------------------------

New page:
Cassandra provides hinted handoff as a way to (a) provide extreme write availability when consistency is not required and (b) to reduce the time required for a temporarily failed node to become consistent again with live ones.

Hinted handoff means that if a node that should receive a write is down, Cassandra will send that write to another node with a "hint" saying that when the destination node becomes available again, the write should be forwarded there.

A hinted write is NOT sufficient to satify !ConsistencyLevel requirements.  Take the simple example of a cluster of two nodes, A and B, and a replication factor of 1 (each key is stored on one node).  Suppose node A is down while we write key K to it with !ConsistencyLevel.ONE.  Then we must fail the write: recall from the [[API]] page that "if `W` + `R` > `ReplicationFactor`, where W is the number of nodes to block for on write, and R the number to block for on reads, you will have strongly consistent behavior; that is, readers will always see the most recent write."

Thus if we write a hint to B and call the write good because it is written "somewhere," there is no way to read the data at any !ConsistencyLevel until A comes back up and B forwards the data to him, and only the lowest !ConsistencyLevel of ZERO will accept writes in this situation.