[ 
https://issues.apache.org/jira/browse/HBASE-21774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16786720#comment-16786720
 ] 

Dmitriy Kuharev commented on HBASE-21774:
-----------------------------------------

[~apurtell],

the fix I provided is just an improvement of the current code. 
EnvironmentEdge#currentTime cannot use System#nanoTime because there a lot of 
usage of it where it is compared to system clock. 

[~sershe]

what places in the code you meant when filed the ticket? I found about 1000 
usage of System#currentTimeMillis and about 500 usages of 
EnvironmentEdgeManager#currentTime (which also uses system clock time) in the 
code base. I think all these usages need to be reviewed and replaced with 
#monotonicTime in case if they are used for measuring intervals

> 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, HBASE-21774.master.003.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)

Reply via email to