[ https://issues.apache.org/jira/browse/HBASE-21774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16785691#comment-16785691 ]
Dmitriy Kuharev commented on HBASE-21774: ----------------------------------------- Made a slightly different patch. It turned out that it is not quite feasible to use System#nanoTime in EnvironmentEdge#currentTime - There are a lot of usages of it where its return value is compared with system clock time. Rather than fixing EnvironmentEdge#currentTime I decided to add a new function: monotonicTime by analogy of Hadoop's Time#now vs. Time#monotonicTime. > do not use currentTimeMillis to measure intervals > ------------------------------------------------- > > Key: HBASE-21774 > URL: https://issues.apache.org/jira/browse/HBASE-21774 > Project: HBase > Issue Type: Bug > Reporter: Sergey Shelukhin > Assignee: Dmitriy Kuharev > Priority: Minor > Attachments: HBASE-21774.master.001.patch, > HBASE-21774.master.002.patch > > > I've noticed it in a few places in the code... > currentMillis can go backwards and have other artifacts. > nanoTime should be used for intervals (see > [https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#nanoTime()|https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#nanoTime()] > ) unless it's both the case that the calls are frequent and nanoTime will > result in perf overhead, and also that artifacts from negative intervals and > such are relatively harmless or possible to work around in the code. -- This message was sent by Atlassian JIRA (v7.6.3#76005)