[ 
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)

Reply via email to