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

mazhengxuan commented on HBASE-29213:
-------------------------------------

I'd like to take this issue. The test starts measuring elapsed time after 
constructing the worker and its Guava RateLimiter. The limiter can accumulate 
permits before that measurement starts, so the observed duration may be 
slightly below five seconds even when rate limiting is working as intended. I 
plan to move the start timestamp to immediately before worker construction, 
keep the existing plan-count checks, and run testRateLimit repeatedly on 
branch-2.5.

> TestRegionNormalizerWorker.testRateLimit fails because of microseconds
> ----------------------------------------------------------------------
>
>                 Key: HBASE-29213
>                 URL: https://issues.apache.org/jira/browse/HBASE-29213
>             Project: HBase
>          Issue Type: Bug
>          Components: Normalizer, test
>            Reporter: Istvan Toth
>            Priority: Minor
>
> I saw this today inĀ  branch-2.5 CI run.
> This looks like a time resolution artifact, we should relax the assertation, 
> or fix the measurement.
> {noformat}
> [ERROR] 
> org.apache.hadoop.hbase.master.normalizer.TestRegionNormalizerWorker.testRateLimit
>   Time elapsed: 7.495 s  <<< FAILURE!
> java.lang.AssertionError: 
> rate limited normalizer should have taken at least 5 seconds
> Expected: a value equal to or greater than <PT5S>
>      but: <PT4.999904667S> was less than <PT5S>
>       at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
>       at 
> org.apache.hadoop.hbase.master.normalizer.TestRegionNormalizerWorker.testRateLimit(TestRegionNormalizerWorker.java:203)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.base/java.lang.reflect.Method.invoke(Method.java:568)
>       at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>       at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>       at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>       at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>       at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>       at 
> org.mockito.internal.junit.JUnitSessionStore$1.evaluateSafely(JUnitSessionStore.java:55)
>       at 
> org.mockito.internal.junit.JUnitSessionStore$1.evaluate(JUnitSessionStore.java:43)
>       at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>       at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>       at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>       at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>       at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>       at 
> org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:299)
>       at 
> org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:293)
>       at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>       at java.base/java.lang.Thread.run(Thread.java:840){noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to