[
https://issues.apache.org/jira/browse/HIVE-26500?focusedWorklogId=806339&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-806339
]
ASF GitHub Bot logged work on HIVE-26500:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 06/Sep/22 12:01
Start Date: 06/Sep/22 12:01
Worklog Time Spent: 10m
Work Description: abstractdog commented on code in PR #3556:
URL: https://github.com/apache/hive/pull/3556#discussion_r963615677
##########
standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java:
##########
@@ -3306,22 +3314,38 @@ public void testJDOPersistanceManagerCleanup() throws
Exception {
return;
}
- int numObjectsBeforeClose = getJDOPersistanceManagerCacheSize();
+ int numObjectsBeforeUse = getJDOPersistanceManagerCacheSize();
HiveMetaStoreClient closingClient = new HiveMetaStoreClient(conf);
closingClient.getAllDatabases();
closingClient.close();
- Thread.sleep(5 * 1000); // give HMS time to handle close request
- int numObjectsAfterClose = getJDOPersistanceManagerCacheSize();
- assertTrue(numObjectsBeforeClose == numObjectsAfterClose);
+ MetastoreTestUtils.waitForAssertion("Checking pm cachesize after client
close", new Runnable() {
+ @Override
+ public void run() {
+ int numObjectsAfterClose = getJDOPersistanceManagerCacheSize();
+ assertTrue(String.format("numObjectsBeforeUse: %d !=
numObjectsAfterClose: %d", numObjectsBeforeUse,
+ numObjectsAfterClose), numObjectsBeforeUse ==
numObjectsAfterClose);
+ }
+ }, 500, 30000);
+
+ int numObjectsAfterClose = getJDOPersistanceManagerCacheSize();
HiveMetaStoreClient nonClosingClient = new HiveMetaStoreClient(conf);
nonClosingClient.getAllDatabases();
// Drop connection without calling close. HMS thread deleteContext
// will trigger cleanup
nonClosingClient.getTTransport().close();
- Thread.sleep(5 * 1000);
- int numObjectsAfterDroppedConnection =
getJDOPersistanceManagerCacheSize();
- assertTrue(numObjectsAfterClose == numObjectsAfterDroppedConnection);
+
+ MetastoreTestUtils.waitForAssertion("Checking pm cachesize after transport
close", new Runnable() {
+ @Override
+ public void run() {
+ int numObjectsAfterDroppedConnection =
getJDOPersistanceManagerCacheSize();
+ assertTrue(String.format("numObjectsAfterClose: %d !=
numObjectsAfterDroppedConnection: %d",
+ numObjectsAfterClose, numObjectsAfterDroppedConnection),
+ numObjectsAfterClose == numObjectsAfterDroppedConnection);
+ }
+ }, 500, 30000);
Review Comment:
ack
Issue Time Tracking
-------------------
Worklog Id: (was: 806339)
Time Spent: 1h (was: 50m)
> Improve TestHiveMetastore
> -------------------------
>
> Key: HIVE-26500
> URL: https://issues.apache.org/jira/browse/HIVE-26500
> Project: Hive
> Issue Type: Improvement
> Reporter: László Bodor
> Assignee: László Bodor
> Priority: Major
> Labels: pull-request-available
> Time Spent: 1h
> Remaining Estimate: 0h
>
> {code}
> Thread.sleep(5 * 1000); // give HMS time to handle close request
> int numObjectsAfterClose = getJDOPersistanceManagerCacheSize();
> assertTrue(numObjectsBeforeClose == numObjectsAfterClose);
> {code}
> 1. easy fix: assertTrue(numObjectsBeforeClose == numObjectsAfterClose);
> this tells nothing in case of assertionerror:
> {code}
> java.lang.AssertionError
> at org.junit.Assert.fail(Assert.java:87)
> at org.junit.Assert.assertTrue(Assert.java:42)
> at org.junit.Assert.assertTrue(Assert.java:53)
> at
> org.apache.hadoop.hive.metastore.TestHiveMetaStore.testJDOPersistanceManagerCleanup(TestHiveMetaStore.java:3298)
> {code}
> should tell a more informative message with particular values
> 2. harder fix, maybe do it later
> {code}
> Thread.sleep(5 * 1000); // give HMS time to handle close request
> {code}
> sleep is always dangerous, cannot make sure it handled everything that we
> expected
--
This message was sent by Atlassian Jira
(v8.20.10#820010)