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 TylerHobbs.
http://wiki.apache.org/cassandra/HintedHandoff?action=diff&rev1=4&rev2=5

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

- If a node which should receive a write is down, Cassandra will write a hint 
to a live replica node indicating that the write needs to be replayed to the 
unavailable node. If no live replica nodes exist for this key, and 
!ConsistencyLevel.ANY was specified, the coordinating node will write the hint 
locally. Cassandra uses hinted handoff as a way to (1) reduce the time required 
for a temporarily failed node to become consistent again with live ones and (2) 
provide extreme write availability when consistency is not required.
+ If a write is made and a replica node for the key is down, Cassandra will 
write a hint to a live replica node indicating that the write needs to be 
replayed to the unavailable node. If no replica nodes are alive for this key 
and !ConsistencyLevel.ANY was specified, the coordinating node will write the 
hint locally. Cassandra uses hinted handoff as a way to (1) reduce the time 
required for a temporarily failed node to become consistent again with live 
ones and (2) provide extreme write availability when consistency is not 
required.
  
- A hinted write is NOT sufficient to count towards !ConsistencyLevel 
requirements of ONE, QUORUM, or ALL.  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."
+ A hinted write does NOT count towards !ConsistencyLevel requirements of ONE, 
QUORUM, or ALL.  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.  Historically, only the lowest 
!ConsistencyLevel of ZERO would accept writes in this situation; for 0.6, we 
added !ConsistencyLevel.ANY, meaning, "wait for a write to succeed anywhere, 
even a hinted write that isn't immediately readable."
  

Reply via email to