Skip to content

Instantly share code, notes, and snippets.

@PharkMillups
Created June 24, 2010 11:56
Show Gist options
  • Select an option

  • Save PharkMillups/451357 to your computer and use it in GitHub Desktop.

Select an option

Save PharkMillups/451357 to your computer and use it in GitHub Desktop.
gotascii # i'm reading the forcing read repair section on the wiki,
and some of it is a little unclear to me...how could you end up with a
failed read by increasing the r val on a bucket? one way i came up with
was if your r val is less than or equal to the change in r val you could
get a whole set of node not found reads
seancribbs # gotascii: all you need is one fewer successful responses
than R for the read to fail
gotascii # i.e. you go from 3 to 5 and then try to do a read with r = 2...you
could get back the 2 nodes that don't have the data
seancribbs # but read repair happens regardless
gotascii: no, it'll wait until it at least 3 nodes say not found
gotascii # i thought in the instance where 1 of the R nodes doesnt
have the obj but the other do, that it will auto red repair
seancribbs # or you get 2 successes whenever you read, yes, it repairs.
regardless of the response to the client
gotascii # ah ok so it would send back a failure, and then repair
seancribbs # yes
gotascii # gotcha. and that is because doing it the other way would
create a potentially high latency read while the client is waiting for the
repair to take place...in the case of repairs that take a long time
gotascii # kinda obvious now that you've explained it heh, thanks sean!
gotascii # another reason read repair might happen is if two nodes respond
and one node has a stale vector clock (not a divergent vector clock, but a
definitively stale one)...in this case would the read be successful,
return the latest obj, and then repair the stale node?
seancribbs # yes, if they can be resolved to a common lineage
justinsheehy # gotascii: yes, exactly. the "old" one will be read-repaired
and replaced with the new one.
gotascii # which is different than if one node replies "not found" and
the other replies "found"
seancribbs # right
gotascii # in that case the read would fail, and then behind the scenes
it would repair
seancribbs # yes
gotascii # awesome, last repair ?..in the wiki it says to force read
repair set R to the previous n and read all the objs...couldnt that
result in a case where the original set of n replies for R
gotascii # and a repair doesn't happen
seancribbs # gotascii: that's the thing, even if you don't get all
N replies, it will repair
gotascii # so even if i get a full read quorum of found objects, it will
repair the other replicas that dont have it
seancribbs # yes
gotascii # wow, riak is pretty awesome
seancribbs # gotascii: it actually waits for all participating
partitions to reply or timeout before repairing
gotascii # that is way cool
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment