-
Notifications
You must be signed in to change notification settings - Fork 155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[leo_storage] GET can be false negative more than necessary #553
Comments
To me, when all replicas are out, the data is lost already. One could be lucky to get back some later on but that's not guaranteed any more. And I would not say the eventual consistency is violated in this case, there are changes for each step, and those changes would eventually propagate to all copies.
Not much difference from
|
At a first glance reading this thread I thought what you think. just in case, https://docs.google.com/spreadsheets/d/1Ebmy6MzRknp3NGpcjDpXljQMKTZqq8GnsJWULN5pVyI/edit?usp=sharing obviously the current behaviour responding 404(not truth) in case one of replica is down should be fixed by responding 500(unknown) as it's at least not lied. |
First of all, let me align the understanding of the chart For the case at J6, it means
Now it would reply That makes things complicated, now the node has much more state to remember.
Things go crazier if we consider versioning too (e.g. I have v1 but I know someone has v1+) To me, keep things simple is the key to have a good consistency model. |
And actually how do you define |
About consistency, one of the biggest problem is the incomplete writes are not roll backed. (Not 2PC) For a (N=3, W=2), when two replicas fail, the write is rejected with code For example, let's update a object Begin
Failure of two replicas
Attempt to Update (Should be rejected) [OK]
Replicas back
Read (Return Newest Version) [??]
Replicas got fixed [??]
|
@windkit and regarding consistency reply from you |
@mocchira Ya I agree the later is side tracked, a new issue should be suitable. So back to the case of
You are suggesting that
Also got a |
thank you.
yes.
The purpose of responding 500 is to avoid false negative if possible. for instance an application writing code like the following
may issue unnecessary PUT operations with the current but can be avoidable with the new one. also the title (cited from ML thread) is slightly different from what the eventually consistency actually means |
@mocchira OK I got it now, i agree that would be simple solution. |
@windkit thank you for sparing your time. I updated #532 based on your comments( #553 (comment) ) about consistency. |
IMPL
|
PR: #948 |
reported here.
https://groups.google.com/d/msg/leoproject_leofs/tLgNlvK7Eps/uEm1J9qGDgAJ
summary picked from the above thread
In the above scenario, eventually consistency is violated, as object state changes "exists -> doesn't exist -> exist".
We have to respond 500 instead of 404 at 2).
The text was updated successfully, but these errors were encountered: