You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Wellington Chevreuil (Jira)" <ji...@apache.org> on 2026/05/21 14:40:00 UTC

[jira] [Resolved] (HBASE-30166) Attempt to fix flakeyness in TestPrefetchPersistence

     [ https://issues.apache.org/jira/browse/HBASE-30166?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Wellington Chevreuil resolved HBASE-30166.
------------------------------------------
    Resolution: Fixed

Merged into master, branch-3, branch-2 and branch-2.6. Thanks for the reviews, [~andor] [~paksyd] !

> Attempt to fix flakeyness in TestPrefetchPersistence 
> -----------------------------------------------------
>
>                 Key: HBASE-30166
>                 URL: https://issues.apache.org/jira/browse/HBASE-30166
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 3.0.0-beta-1, 2.7.0, 2.6.5
>            Reporter: Wellington Chevreuil
>            Assignee: Wellington Chevreuil
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 3.0.0, 2.7.0, 2.6.6
>
>
> TestPrefetchPersistence seems to intermittently fail due to at least two conditions:
> 1)
> TestPrefetchPersistence.testPrefetchPersistence()[1] -- Time elapsed: 8.291 s <<< FAILURE!
> org.opentest4j.AssertionFailedError: expected: <true> but was: <false>
> at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
> at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
> at org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:63)
> at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:36)
> at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:31)
> at org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:183)
> at org.apache.hadoop.hbase.io.hfile.bucket.TestPrefetchPersistence.testPrefetchPersistence(TestPrefetchPersistence.java:128)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at java.util.Optional.ifPresent(Optional.java:159)
> at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
> at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:419)
> at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
> at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
> at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
> at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
> at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
> at java.util.ArrayList.forEach(ArrayList.java:1259)
> at java.util.ArrayList.forEach(ArrayList.java:1259)
>  
> 2) org.opentest4j.AssertionFailedError: expected: <0> but was: <353280>
> at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
> at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
> at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
> at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:166)
> at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:161)
> at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:632)
> at org.apache.hadoop.hbase.io.hfile.bucket.TestPrefetchPersistence.testPrefetchPersistence(TestPrefetchPersistence.java:110)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at java.util.Optional.ifPresent(Optional.java:159)
> at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
> at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
> at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:419)
> at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
> at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
> at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
> at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
> at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
> at java.util.ArrayList.forEach(ArrayList.java:1259)
> at java.util.ArrayList.forEach(ArrayList.java:1259)
>  
> The condition #1 may happen because we are currently checking only if the prefetch reader has finished, before proceeding with the cache shutdown, however the actual cache writers may have not yet all blocks to the cache, causing the given files to never be actually added to the "fullyCachedFiles" map.
>  
> Condition #2 may happen in subsequent parameterized runs where the created BucketCache instance is reusing cache and persistent file from previous runs. We should add an @AfterEach method for cleaning up the test dirs.



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