Created
June 24, 2010 11:56
-
-
Save PharkMillups/451357 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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