[
https://issues.apache.org/jira/browse/CASSANDRA-11517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230056#comment-15230056
]
Sylvain Lebresne commented on CASSANDRA-11517:
----------------------------------------------
I'm all for that change in principle, but the attached branch doesn't work. The
CAS loop properly sets the {{lastNanos}} but return {{nanosSince}}, which stays
the same for a whole seconds (this breaks tons of unit test in particular). The
added unit test (which fails consistently) also looks weird: the
{{lastTimestamp}} used by the tasks is never updated and the condition {{if
(lastTimestamp <= uuid.timestamp())}} seems to be the invert of what we want.
Nit: call me crazy but the asymmetry of {{lastNanosOriginal}} and
{{newLastNanos}} pains me (that is, I'd use {{originalLastNanos}} instead).
Lastly, as much as doing this make sense, I think this belong to trunk only (as
a minor improvement).
> o.a.c.utils.UUIDGen could handle contention better
> --------------------------------------------------
>
> Key: CASSANDRA-11517
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11517
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Reporter: Ariel Weisberg
> Assignee: Ariel Weisberg
> Priority: Minor
> Fix For: 3.0.x, 3.x
>
>
> I noticed this profiling a query handler implementation that uses UUIDGen to
> get handles to track queries for logging purposes.
> Under contention threads are being unscheduled instead of spinning until the
> lock is available. I would have expected intrinsic locks to be able to adapt
> to this based on profiling information.
> Either way it's seems pretty straightforward to rewrite this to use a CAS
> loop and test that it generally produces unique values.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)