I agree with what others have said, especially Allen's point that this
is not at all specific to consensus but occurs in any distributed
system.
> On 04/18/14 16:15, Dan Palmer wrote:
>
> Yeah, this would work, but I think it’s more of a work-around rather than a
> fix. If the client made the write, which it thought had failed, and then
> chose not to re-attempt it, the database would still be inconsistent.
To throw in my two cents, the only outcomes that clients see are
"don't know" and "completed". There's only a small fraction of failure
cases where you know for certain that the request has not been and
will never be executed, so it's better to just lump that into "don't
know". A client that gets "don't know" can either pass that on up the
stack to the application or retry. It's pretty hard to guarantee that
a command will never be executed; that takes about as much work as
completing the command.
-Diego