Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Missing query: best possible value #534

macintux opened this Issue Apr 25, 2013 · 0 comments


None yet
2 participants

macintux commented Apr 25, 2013

I discovered tonight that there is a gap in our query support: there's no way to ask Riak for the best possible value in a single request.

R=quorum runs the risk that the 3rd vnode to reply has a fresher value than the first 2 vnodes.

R=N runs the risk that one of the vnodes returns an error and the entire query fails.

As @Vagabond pointed out, errors are fairly uncommon, but notfound_ok=false clearly adds to the number of errors received.

@bsparrow435 had one suggestion, that along the lines of notfound_ok we create an error_ok parameter.

I have an alternate idea, but it may be significantly more work: allow a lower and upper range for R and W (and perhaps the other PR/PW/DW parameters as well).

So R={2,3} would be interpreted as "wait for 3 vnodes to get the best value, but if you can only get a response from 2, I can live with that."

This would be enhanced by the fsm timeout functionality targeted for 1.4, so the client can ask for "best possible answer within the specified time limit".

This is also related to an idea that @jonmeredith mentioned in the Engineering chat a few days ago, that notfound messages could carry more weight when returned by primary vnodes, or more accurately not be considered canonical when returned by secondary vnodes.

@jtuple jtuple added this to the 2.1 milestone Mar 24, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment