> Is the new implementation a separate, distinctly modularized new body of work

It’s primarily a distinct, modularised and new body of work, however there is 
some shared code that has been modified - namely PaxosState, in which legacy 
code is maintained but modified for compatibility, and the system.paxos table 
(which receives a new column, and slightly modified serialization code).  It is 
conceptually an optimised version of the existing algorithm.

If there's a chance of being of value to 4.0, I can try to put up a patch next 
week alongside a high level description of the changes.

> But a performance regression is a regression, I'm not shrugging it off.

I don't want to give the impression I'm shrugging off the correctness issue 
either. It's a serious issue to fix, but since all successful updates to the 
database are linearizable, I think it's likely that many applications behave 
correctly with the present semantics, or at least encounter only transient 
errors. No doubt many also do not, but I have no idea of the ratio.

The regression isn't itself a simple issue either - depending on the topology 
and message latencies it is not difficult to produce inescapable contention, 
i.e. guaranteed timeouts - that might persist as long as clients continue to 
retry. It could be quite a serious degradation of service to impose on our 
users.

I don't pretend to know the correct way to make a decision balancing these 
considerations, but I am perhaps more concerned about imposing service outages 
than I am temporarily maintaining semantics our users have apparently accepted 
for years - though I absolutely share your embarrassment there.


On 12/11/2020, 12:41, "Joshua McKenzie" <jmcken...@apache.org> wrote:

    Is the new implementation a separate, distinctly modularized new body of
    work or does it make substantial changes to existing implementation and
    subsume it?

    On Thu, Nov 12, 2020 at 3:56 AM Sylvain Lebresne <lebre...@gmail.com> wrote:

    > Regarding option #4, I'll remark that experience tends to suggest users
    > don't consistently read the `NEWS.txt` file on upgrade, so option #4 will
    > likely essentially mean "LWT has a correctness issue, but once it broke
    > your data enough that you'll notice, you'll be able to dig the proper flag
    > to fix it for next time". I guess it's better than nothing, of course, but
    > I'll admit that defaulting to "opt-in correctness", especially for a
    > feature (LWT) that exists uniquely to provide additional guarantees, is
    > something I have a hard rallying behind.
    >
    > But a performance regression is a regression, I'm not shrugging it off.
    > Still, I feel we shouldn't leave LWT with a fairly serious known
    > correctness bug and I frankly feel bad for "the project" that this has 
been
    > known for so long without action, so I'm a bit biased in wanting to get it
    > fixed asap.
    >
    > But maybe I'm overstating the urgency here, and maybe option #1 is a 
better
    > way forward.
    >
    > --
    > Sylvain
    >



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
For additional commands, e-mail: dev-h...@cassandra.apache.org

Reply via email to