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

nkeywal commented on HBASE-6476:
--------------------------------

I think we're actually on the same line :-).
In src/main code, we should NEVER use System.currentTimeMillis().
In src/test code, we sometimes use it to measure the time spent in the 
function. For example:

{noformat}
// some test code
final long max = System.currentTimeMillis() + 10000;
while (!condition){ // condition is modified by another thread from src/main
 Assert.assertTrue( System.currentTimeMillis() < max, " condition not met after 
10s, exiting);
 Thread.sleep(1)
}
// more test code
{noformat}

I've wrote quite a lot of code like this. It helps the test to fail fast and 
clearly. In a way, that comes from JUnit/Surefire limitations. But at the end 
of the day, there is no reason to use EnvEdge here. On the contrary, we should 
NOT use it here. Because we could imagine a test that needs both to have a 
specific EnvEdge to fake the time for the src/main method, but still need to 
check that we're not spending too much 'real' time in it.

What do you think?
                
> Replace all occurrances of System.currentTimeMillis() with EnvironmentEdge 
> equivalent
> -------------------------------------------------------------------------------------
>
>                 Key: HBASE-6476
>                 URL: https://issues.apache.org/jira/browse/HBASE-6476
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Lars Hofhansl
>            Assignee: Lars Hofhansl
>            Priority: Minor
>             Fix For: 0.96.0
>
>         Attachments: 6476.txt, 6476-v2.txt, 6476-v2.txt
>
>
> There are still some areas where System.currentTimeMillis() is used in HBase. 
> In order to make all parts of the code base testable and (potentially) to be 
> able to configure HBase's notion of time, this should be generally be 
> replaced with EnvironmentEdgeManager.currentTimeMillis().
> How hard would it be to add a maven task that checks for that, so we do not 
> introduce System.currentTimeMillis back in the future?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to