[
https://issues.apache.org/jira/browse/CASSANDRA-8963?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14629934#comment-14629934
]
Benedict commented on CASSANDRA-8963:
-------------------------------------
I would say leave this until I've actually posted a patch for review, but if
there's even the hint that there may be review problems, Sylvain is probably
right on another count: this should wait until after 3.0
To respond to that specific one: however you feel about bit-fiddling, that
particular issue of "readability" can be trivially solved by a static method or
two to make it declarative, which is now my norm for such encodings. However
the _conceptual_ clarity delivered by separating the count from the "is
finished" flag is IMO more than a compelling enough reason to change.
If that snippet were, for instance, written as:
{code}
int current = state;
int next = runningCount(current) - 1;
next |= finishingFlag(current);
{code}
I think it makes it quite significantly clearer, especially as we now have only
one location to worry about concurrent interactions (a single CAS), and no
thinking through what the count means when it is < 0 by comparison to what it
means when > 0. There is simply a count portion, and a flag portion, and they
are truly orthogonal.
> Make OpOrder more intuitive
> ---------------------------
>
> Key: CASSANDRA-8963
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8963
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Reporter: Benedict
> Assignee: Benedict
> Priority: Minor
> Fix For: 3.x
>
>
> There has been plenty of feedback about OpOrder being unintuitive. As well as
> revisiting the naming, I propose to introduce an Action object with RAII
> (AutoCloseable) protection that should be more obvious to users of the API.
> We can also then protect this by a Ref instance for use cases where the
> action lifetime is illdefined, and perhaps also introduce some checks for
> actions whose lifetimes extend beyond a sensible limit to report those where
> the object reference is retained.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)