[
https://issues.apache.org/jira/browse/HBASE-9315?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13748127#comment-13748127
]
Nick Dimiduk commented on HBASE-9315:
-------------------------------------
The test calculates a cache size and block size such that 9 blocks will fit in
cache, and then inserts one extra block. Sometimes two single-block evictions
happen instead of one single-block or double-block eviction. My best guess for
the reason is the delta between minSize and acceptableSize is interacting with
the few bytes of free space between the total size of all cached blocks and the
cache size. There also appears to be a race between when System.out.println is
called and the assert on the following line -- often "Background Evictions run:
1" is printed even when the assertion fails.
> TestLruBlockCache.testBackgroundEvictionThread fails on suse
> ------------------------------------------------------------
>
> Key: HBASE-9315
> URL: https://issues.apache.org/jira/browse/HBASE-9315
> Project: HBase
> Issue Type: Test
> Affects Versions: 0.95.2
> Reporter: Nick Dimiduk
> Assignee: Nick Dimiduk
>
> One of our build machines is consistently having trouble with this test.
> {noformat}
> Error Message
> expected:<2> but was:<1>
> Stacktrace
> java.lang.AssertionError: expected:<2> but was:<1>
> at org.junit.Assert.fail(Assert.java:88)
> at org.junit.Assert.failNotEquals(Assert.java:743)
> at org.junit.Assert.assertEquals(Assert.java:118)
> at org.junit.Assert.assertEquals(Assert.java:555)
> at org.junit.Assert.assertEquals(Assert.java:542)
> at
> org.apache.hadoop.hbase.io.hfile.TestLruBlockCache.testBackgroundEvictionThread(TestLruBlockCache.java:85)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
> at org.junit.runners.Suite.runChild(Suite.java:127)
> at org.junit.runners.Suite.runChild(Suite.java:26)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Standard Output
> Background Evictions run: 2
> Standard Error
> 2013-08-22 11:02:58,331 INFO [pool-1-thread-1] hbase.ResourceChecker(147):
> before: io.hfile.TestLruBlockCache#testBackgroundEvictionThread Thread=35,
> OpenFileDescriptor=277, MaxFileDescriptor=95000, SystemLoadAverage=119,
> ProcessCount=75, AvailableMemoryMB=8884, ConnectionCount=1
> 2013-08-22 11:02:58,338 INFO [pool-1-thread-1] hbase.ResourceChecker(171):
> after: io.hfile.TestLruBlockCache#testBackgroundEvictionThread Thread=36 (was
> 35) - Thread LEAK? -, OpenFileDescriptor=279 (was 277) - OpenFileDescriptor
> LEAK? -, MaxFileDescriptor=95000 (was 95000), SystemLoadAverage=119 (was
> 119), ProcessCount=75 (was 75), AvailableMemoryMB=8884 (was 8884),
> ConnectionCount=1 (was 1)
> 2013-08-22 11:07:58,331 DEBUG [LRU Statistics #0] hfile.LruBlockCache(728):
> Stats: total=87.01 KB, free=10.65 KB, max=97.66 KB, blocks=8, accesses=0,
> hits=0, hitRatio=0, cachingAccesses=0, cachingHits=0,
> cachingHitsRatio=0,evictions=2, evicted=2, evictedPerRun=1.0
> 2013-08-22 11:12:58,331 DEBUG [LRU Statistics #0] hfile.LruBlockCache(728):
> Stats: total=87.01 KB, free=10.65 KB, max=97.66 KB, blocks=8, accesses=0,
> hits=0, hitRatio=0, cachingAccesses=0, cachingHits=0,
> cachingHitsRatio=0,evictions=2, evicted=2, evictedPerRun=1.0
> 2013-08-22 11:17:58,331 DEBUG [LRU Statistics #0] hfile.LruBlockCache(728):
> Stats: total=87.01 KB, free=10.65 KB, max=97.66 KB, blocks=8, accesses=0,
> hits=0, hitRatio=0, cachingAccesses=0, cachingHits=0,
> cachingHitsRatio=0,evictions=2, evicted=2, evictedPerRun=1.0
> {noformat}
--
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