Wellington Chevreuil created HBASE-28976:
--------------------------------------------
Summary: Fix UT flakeyness in
TestBucketCache.testBlockAdditionWaitWhenCache and
TestVerifyBucketCacheFile.testRetrieveFromFile
Key: HBASE-28976
URL: https://issues.apache.org/jira/browse/HBASE-28976
Project: HBase
Issue Type: Bug
Reporter: Wellington Chevreuil
Assignee: Wellington Chevreuil
Noticed these two tests failing intermittently on some of the pre-commit runs.
1) TestVerifyBucketCacheFile.testRetrieveFromFile: The test calls
BucketCache.cacheBlock() passing true to the waitWhenCache parameter, assuming
the cache call will wait for a success cache, however this is only true if the
BucketCache.QUEUE_ADDITION_WAIT_TIME property is also defined, so I believe
this may be causing the intermittent failures when the pre-commit runs on
slower vms.
2) TestVerifyBucketCacheFile.testRetrieveFromFile: One of the checks performed
by this test is to delete the bucket cache file, shutdown the current
BucketCache instance, then create a new BucketCache instance that would load
the persistent file but should fail to recover the cache, as the cache file has
been deleted. The way this recover works, internally, is async. We first read
the contents of the persistent file, which includes the last serialized
backingMap and a checksum of the cache file at that time. It then compares this
recovered checksum against the current cache file checksum. If this
verification fails, it starts a background thread to traverse all backingMap
entries and check if those entries are still available in the cache. At this
point, the test is ready to check the BucketCache allocator size, expecting it
to be 0, but if the background verification has not finished yet, this assert
will fail.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)