[ https://issues.apache.org/jira/browse/HBASE-7612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15501809#comment-15501809 ]
Enis Soztutar commented on HBASE-7612: -------------------------------------- According to javadoc, {{sum()}} is not guaranteed to see an atomic snapshot. I think it is fine for most of our usage though. However, one case is sumThenReset(): {code} * Equivalent in effect to {@link #sum} followed by {@link * #reset}. This method may apply for example during quiescent * points between multithreaded computations. If there are * updates concurrent with this method, the returned value is * <em>not</em> guaranteed to be the final value occurring before * the reset. * * @return the sum */ public long sumThenReset() { {code} In some places in the patch, we are using sumThenReset() which means we maybe dropping some increments. Are these usages correct? Not sure why Counter is a declared public interface. Seems like an oversight. We can optionally replace the Counter internals to be a thin-layer on top of AtomicAdder if we are gonna keep the Counter class for BC. > [JDK8] Replace use of high-scale-lib counters with intrinsic facilities > ----------------------------------------------------------------------- > > Key: HBASE-7612 > URL: https://issues.apache.org/jira/browse/HBASE-7612 > Project: HBase > Issue Type: Sub-task > Components: metrics > Affects Versions: 2.0.0 > Reporter: Andrew Purtell > Assignee: Duo Zhang > Priority: Trivial > Fix For: 2.0.0 > > Attachments: HBASE-7612-v1.patch, HBASE-7612.patch > > > JEP155 introduces a few new classes (DoubleAccumulator, DoubleAdder, > LongAccumulator, LongAdder) that "internally employ contention-reduction > techniques that provide huge throughput improvements as compared to Atomic > variables". There are applications of these where we are currently using > Cliff Click's high-scale-lib and for metrics. > See http://openjdk.java.net/jeps/155 -- This message was sent by Atlassian JIRA (v6.3.4#6332)